go 赋值为值传递 - Go语言中文社区

go 赋值为值传递


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的区别

版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/yangyan0/article/details/104753207
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2021-06-12 19:40:30
  • 阅读 ( 1006 )
  • 分类:Go

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢