golang 分配新切片与修复旧切片之间的差异
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang 分配新切片与修复旧切片之间的差异相关的知识,希望对你有一定的参考价值。
golang数组与切片
golang中坑的慢慢踩!
我们都知道golang中的切片是引用类型,但是在函数中使用append给切片追加元素是行不通的,需要使用切片的指针类型才能增加元素
数组的使用:
package main import ( "fmt" ) func ChangeArr(arr [5]int) { arr[0] = 6 } func ChangeArr2(arr *[5]int) { arr[0] = 6 } func main() { a := [5]int{1, 2, 3, 4, 5} PrintArr(a) ChangeArr(a) PrintArr(a) ChangeArr2(&a) PrintArr(a) } func PrintArr(arr [5]int) { fmt.Println(" 打印数组:") for _, v := range arr { fmt.Print(v, ",") } }
运行结果:
切片的使用:
package main import ( "fmt" ) func ChangeArr(arr []int) { arr[1] = 20 arr = append(arr, 8) //此处的元素并没有增加到切片 } func ChangeArr2(arr *[]int) { (*arr)[0] = 6 //因为传入的是切片指针,所以所有使用切片的地方都必须是指针类型的切片(这里与数组不同) *arr = append(*arr, 7) //此处的元素添加进了切片 } func main() { a := []int{1, 2, 3, 4, 5} PrintArr(a) ChangeArr(a) PrintArr(a) ChangeArr2(&a) PrintArr(a) } func PrintArr(arr []int) { fmt.Println(" 打印切片:") for _, v := range arr { fmt.Print(v, ",") } }
运行结果:
以上是关于golang 分配新切片与修复旧切片之间的差异的主要内容,如果未能解决你的问题,请参考以下文章