随笔分类 - GO基础
摘要:1. 什么是闭包? 一个函数内引用了外部的局部变量,这种现象,就称之为闭包。 例如下面的这段代码中,adder 函数返回了一个匿名函数,而该匿名函数中引用了 adder 函数中的局部变量 sum ,那这个函数就是一个闭包。 package main import "fmt" func adder()
阅读全文
摘要:1. 扩容后预估容量 假设现在有一个长度为 2 的切片,对其进行扩容,增加三个元素 sli := []int{1,2} sli = append(sli, 3, 4, 5) 对于扩容后的切片,长度为 5,这一点没有任何争议。 但容量呢?难道也是 5? 经过运行验证,实际的容量为 6 。 什么情况?这
阅读全文
摘要:切片是一个引用类型,将它作为参数传入函数后,你在函数里对数据作变更是会实时反映到实参切片的。 func foo(s []int) { s[0] = 666 } func main() { slice := []int{1,2} fmt.Println(slice) // [1 2] foo(slic
阅读全文
摘要:Go里面的数组是值类型,切片是引用类型。 值类型的对象在做为实参传给函数时,形参是实参的另外拷贝的一份数据,对形参的修改不会影响函数外实参的值。 因此在如下例子中两次打印的指针地址是不一样的 package main import "fmt" func arrayTest (x [2]int) {
阅读全文
摘要:Go语言中都是值传递,而不是引用传递,也不是指针传递。 Go 中切片的底层结构是这样的 type slice struct { array unsafe.Pointer len int cap int } 而当你将切片作为实参传给函数时,函数是会拷贝一份实参的结构和数据,生成另一个切片,实参切片和形
阅读全文
摘要:切片是一个引用类型,将它作为参数传入函数后,你在函数里对数据作变更是会实时反映到实参切片的。 func foo(s []int) { s[0] = 666 } func main() { slice := []int{1,2} fmt.Println(slice) // [1 2] foo(slic
阅读全文

浙公网安备 33010602011771号