golang中切片slice的引用問題

ddxx11223發表於2017-09-26
func main() {

        var t=make([]int,0,10)
        var s=make([]int,0,10)

        fmt.Printf("addr:%p \t\tlen:%v content:%v\n",t,len(t),t);
        fmt.Printf("addr:%p \t\tlen:%v content:%v\n",s,len(s),s);

        t =append(s,1,2,3,4)

        fmt.Println(t)
        fmt.Println(s)

        fmt.Printf("addr:%p \t\tlen:%v content:%v\n",t,len(t),t);
        fmt.Printf("addr:%p \t\tlen:%v content:%v\n",s,len(s),s);

        }

result: addr:0x1044c030 len:0 content:[] addr:0x1044c060 len:0 content:[] [1 2 3 4] [] addr:0x1044c060 len:4 content:[1 2 3 4] addr:0x1044c060 len:0 content:[]

一開始兩個切片地址不同,可以理解。 後面我進行 append,容量足夠的情況下,切片地址是不會變的,那為什麼s和t的地址是一樣的,它們的內容卻不一樣?

更多原創文章乾貨分享,請關注公眾號
  • golang中切片slice的引用問題
  • 加微信實戰群請加微信(註明:實戰群):gocnio

相關文章