Go坑一:
首先介绍一下make函数:
Go语言提供的内置函数make()可以用于灵活地创建数组切片。
创建一个初始元素个数为5的数组切片,元素初始值为0:
mySlice1 := make([]int, 5)
创建一个初始元素个数为5的数组切片,元素初始值为0,并预留10个元素的存储空间:
mySlice2 := make([]int, 5, 10)
make函数第二个参数的意义是 预留5个存储空间。但是如果我append给slice添加元素的话,那么当我加的超过5个时,会新创建一部分空间去添加。
先看看下面的代码:
package main
import (
"fmt"
)
func Add(s []int){
s = append(s,3)
}
func main(){
s := make([]int,0)
fmt.Println(s)
Add(s)
fmt.Println(s)
}
添加一个元素3.
执行结果
[]
[]
看看。并没有把3加上去。
那么怎么解决呢。利用返回值的方法,能解决这个问题。
使用返回值
package main
import (
"fmt"
)
func Add(s []int) []int {
s = append(s,3)
return s
}
func main(){
s := make([]int,0)
fmt.Println(s)
s = Add(s)
fmt.Println(s)
}
执行结果:
[]
[3]