Golang Go语言中萌新求教一个语法问题(关于 slice)
Golang Go语言中萌新求教一个语法问题(关于 slice)
package main
import "fmt"
func main(){
var a = []int{1,2,3}
arr(a)
fmt.Println(a)
}
func arr (a []int) {
a[0] = 888
fmt.Println(“a=”,a)
}
这里 mian 函数和 arr 函数 a 都是{888,2,3}
说明 slice 是引用类型
但是把 arr 函数语句换成 a = append ( a, 3 )
这样只是在 arr 函数里追加了 3,但是 mian 中没有改变,这是为什么呢?
更多关于Golang Go语言中萌新求教一个语法问题(关于 slice)的实战教程也可以访问 https://www.itying.com/category-94-b0.html
append 会扩容 slice,导致指针变了
更多关于Golang Go语言中萌新求教一个语法问题(关于 slice)的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
明白了,蟹蟹
你好,很高兴看到你对Go语言中的slice语法有疑问。在Go语言中,slice是一个非常强大且灵活的数据结构,常用于处理动态数组。以下是一些关于slice的基本语法和常见操作的简要说明,希望能帮助你解决疑惑:
-
声明和初始化:
var s []int // 声明一个空的int slice s = []int{1, 2, 3} // 初始化slice
-
slice的底层结构: slice实际上是一个包含三个字段的结构体:指向数组的指针(Pointer)、slice的长度(Length)和slice的容量(Capacity)。
-
切片操作:
s2 := s[1:3] // 从s中切片,得到包含s[1]和s[2]的新slice
-
追加元素:
s = append(s, 4) // 将4追加到slice末尾
-
注意事项:
- 当slice的容量不足以容纳新元素时,
append
操作会分配一个新的底层数组,并复制现有元素到新数组中。 - slice是引用类型,因此传递slice到函数时,函数内对slice的修改会影响原slice。
- 当slice的容量不足以容纳新元素时,
如果你是遇到了具体的slice语法错误或者问题,欢迎提供更详细的代码或错误信息,以便更准确地帮助你解决问题。希望这些信息对你有所帮助!