Go 语言陷阱 - 数组和切片
Go 语言/golang 高性能编程(high performance go),Go 语言进阶教程,Go 语言陷阱(gotchas)。这篇文章介绍了 Go 语言中数组(Array) 和切片(Slice)的常见陷阱和规避方式。例如数组作为参数,修改参数,原数组不会发生改变。
Last updated
Go 语言/golang 高性能编程(high performance go),Go 语言进阶教程,Go 语言陷阱(gotchas)。这篇文章介绍了 Go 语言中数组(Array) 和切片(Slice)的常见陷阱和规避方式。例如数组作为参数,修改参数,原数组不会发生改变。
Last updated
func foo(a [2]int) {
a[0] = 200
}
func main() {
a := [2]int{1, 2}
foo(a)
fmt.Println(a)
}func foo(a *[2]int) {
(*a)[0] = 200
}
func main() {
a := [2]int{1, 2}
foo(&a)
fmt.Println(a)
}func foo(a []int) {
a[0] = 200
}
func main() {
a := []int{1, 2}
foo(a)
fmt.Println(a)
}func foo(a []int) {
a = append(a, 1, 2, 3, 4, 5, 6, 7, 8)
a[0] = 200
}
func main() {
a := []int{1, 2}
foo(a)
fmt.Println(a)
}func foo(a []int) []int {
a = append(a, 1, 2, 3, 4, 5, 6, 7, 8)
a[0] = 200
return a
}
func main() {
a := []int{1, 2}
a = foo(a)
fmt.Println(a)
}func foo(a *[]int) {
*a = append(*a, 1, 2, 3, 4, 5, 6, 7, 8)
(*a)[0] = 200
}
func main() {
a := []int{1, 2}
foo(&a)
fmt.Println(a)
}[200 2 1 2 3 4 5 6 7 8]