社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
go中赋值,与函数传参均为值传递,不是引用
package main
import "fmt"
func test(i int){
i =2
fmt.Println("test=====",&i)
}
func main(){
var i int = 1
test(i)
fmt.Println("main======")
fmt.Println(&i)
fmt.Println(i)
}
可以看出也是赋值为值传递
切片在实现机制(copy的图,参考的go学习笔记 雨痕)
package main
import "fmt"
func test(i []int){
i[2] = 2
fmt.Printf("address=====%p",&i)
fmt.Printf("address=====%p",i)
fmt.Printf("address=====%p",i[0])
fmt.Printf("address=====%p",&(i[0]))
fmt.Println()
fmt.Println(i)
}
func main(){
a := make([]int,10,10)
a[2] = 1
fmt.Println(a)
test(a)
fmt.Printf("main======%p",&a)
fmt.Printf("main======%p",a)
fmt.Println()
fmt.Println(a[2])
fmt.Println(a)
}
go 内存回收机制得看下
切片取值与append的区别
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!