leecode array 15. 三数之和
摘要:思路: 我们根据题目意思,可以移除nums里面的部分数字,规则如下:0的数量最多为3,其他数字的数量最多为2 我们创建两个map,分别记作map1和map2 其中 map1的k:nums[i], v:i; map2 为 k : nums[i] + nums[j], v 为 []int{i,j},在添
阅读全文
Go reflect
摘要:Go reflect 反射可以在运行时 动态获取变量的各种信息, 比如变量的类型(type),类别(kind) 如果是结构体变量,还可以获取到结构体本身的信息(包括结构体的 字段、 方法) 通过反射,可以修改变量的值,可以调用关联的方法 ... for in-depth
阅读全文
Go select
摘要:Go select and switch How to use https://stackoverflow.com/questions/38821491/what-is-the-difference-between-switch-and-select-in-go
阅读全文
Go goroutine
摘要:Go goroutine 并发和并行 并发 并发表示的是单核运行多个线程(通过CPU轮询实现的,比较损耗CPU,CPU切换的过程) 并行 并行表示的是多核上面运行多线程 goroutine //协程是轻量级的线程 //共享的堆空间 //独立的栈空间 //在运行某个程序时,如何知道是否存在资源竞争问题
阅读全文
Go json
摘要:Go json json 序列化 str, _ := json.Marshal(m) fmt.Printf("%s", str) // Go 里面的string和C里面的char[]基本一致的 // 这里如果序列化的是结构体,如果属性有着自己的tag那么序列化的时候将会使用这个作为键 json 反序
阅读全文
Go file
摘要:Go file os.File os.File这个结构体封装了所有的对文件的操作 打开和关闭文件 打开文件 os.Open(name string)(*File, error) var file, _ = os.Open("static/a.txt") file.Close() os.openFil
阅读全文
Go ... 运算符
摘要:### Go 中 ... 的运用 #### 接收任意数量的参数 ``` func main() { testArgs(0, 1, 2, 3, 4) } func testArgs(args ...any) { fmt.Println(args) } ``` #### 将arr或者slice打散(只能
阅读全文
Go assert
摘要:Go assert 断言 应用场景 由于接口是用于多态,计算机不知道具体的类型,所以就需要我们使用断言来转化成具体的类型 使用断言的时候,如果类型不匹配就会包panic错误 assert return value 我们在使用断言的时候有两个返回值,第一个是断言之后返回的相应类型的数据,第二个是断言是
阅读全文
Go interface
摘要:Go interface 功能 Go 语言通过interface实现了多态的功能,interface 和 struct 基本一致的 interface默认是一个指针,如果我们没有对interface进行初始化就输出,那么就会直接nil // 实现一个接口需要实现这个接口的所有的方法 // 接口没有任
阅读全文
Go extend
摘要:Go的继承 // Go同时嵌套另外一个结构体实现继承,这点和C语言是一样的 // 同样地,我们要使用父的属性或者方法的时候童颜可以间接进行调用的 匿名结构体 type Person struct { name string `json:"name"` age int8 `json:"age"` }
阅读全文
Go struct
摘要:Go struct 定义结构体类型 type XXX struct{ // 结构体字段 == 属性 == field } 申明定义结构体 指针式申明 var personP *Person = new(Person) var personP *Person = &Person{} 引用式申明(引用是
阅读全文
Go map
摘要:map 在 go 里面的运用 map 键值对是无序的 map 的 map 的键必须是能够通过 == 符号进行判断的 map 的申明和申堆空间 var m map[string]int // 在我们进行申明之后进行初始化就可以赋值,通过make进行初始化 m = make(map[string]str
阅读全文
Go slice and arr
摘要:go语言切片和数组 切片 切片的定义 // 1. 直接进行创建的时候指定初始值 s1 := []int{0, 1, 2, 3, lastIndex: lastIndexVal} // 2. 定义一个引用指向一个数组的切片 var slice []int slice = a[0:1] // 这里的a是
阅读全文
Go err handle
摘要:Go 错误处理 捕获错误的代码 //Go 语言中没有try catch这样麻烦的异常捕获方法 //如果需要捕获异常的话需要使用 defer panic recover() 来实现 func main() { fmt.Println("c") defer func() { // 必须要先声明defer
阅读全文
Go output format
摘要:// Go的格式化延续了C的特点 %v -> value %+v -> %#v ->
阅读全文
Go build-in functions
摘要:Go的内置函数 1. new 主要用来分配置类型的内存,返回的是一个指针,相当于C语言测malloc或者calloc 2. make 3. len 用来求长度,只要长度有定义就可以使用len求 4. cap 可以用来获取切片的元素容量的num 5. append 用来对切片等动态增加元素,末尾
阅读全文
Go time
摘要:time 格式化时间 1. fmt.Sprintf var tYear = fmt.Sprintf("%d",time.Now().Year) 2. XXX.Format() // XXX是Time类型的,返回一个格式化之后的字符串 // 2006/01/02 15:04:05//奇葩的format
阅读全文
Go defer
摘要:defer // go语言提供了一个在函数执行完毕之后,执行指定的一系列代码的方法,这个方法就是通过defer这个关键字实现的 // defer在某个函数中,有着一个专门存储defer的栈,当我们函数执行完毕的时候,就会依次执行被defer进入defer栈里面的代码 func main() { de
阅读全文
Go special function
摘要:init function init函数用来进行初始化,在每一个源文件里面的代码,init函数最开始执行 init函数没有参数,同时也没有返回值 method // method 是给结构体定义的函数,我们可以在func(xxx Type) 来为func指定自己的归属者,此时的func也仅仅能通过归
阅读全文