golang 賦值拷貝問題__golang

來源:互聯網
上載者:User
數組切片:func main() {    m := make(map[string]interface{}, 0)    l := make([]int64, 0)    m["hello"] = l    l = append(l,1)    fmt.Println(m["hello"]) //[]}func main() {    l := make([]int64, 0)    l = append(l, 10)    l1 := l    l1 = append(l1, 20)    fmt.Println(l, l1) //[10] [10 20]}
map:func main() {    m := make(map[string]interface{}, 0)    l := map[string]interface{}{        "hello":"hi",    }    m["hello"] = l    l["hi"]=1    fmt.Println(m["hello"]) //map[hello:hi hi:1]}func main() {    m := make(map[string]interface{}, 0)    m["hello"] = 1    n := m    n["hello"] = 2    fmt.Println(n,m) //map[hello:2] map[hello:2]}
struct:type A struct {    B int}func main() {    m := make(map[string]interface{}, 0)    l := A{1}    m["hello"] = l    l.B = 2    fmt.Println(m["hello"]) //{1}}func main() {    l := A{1}    l1 := l    l.B = 2    fmt.Println(l1, l) //{1} {2}}

總結:
1. golang 切片和struct的賦值為值拷貝,map為引用拷貝。
2. 如果要做到修改對象,使用數組指標。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.