我很困惑Go的結構。Golang - 內部結構如何實現?
這是代碼:http://play.golang.org/p/b1NEh7JZoK
爲什麼我便無法獲取變量的地址一個結構?
如果我有兩個int變量,一個門店價值,一個門店地址(指針),這樣的:http://play.golang.org/p/XhvKX-ifdn
我能得到這兩個變量的實際地址,但爲什麼結構不能?
我很困惑Go的結構。Golang - 內部結構如何實現?
這是代碼:http://play.golang.org/p/b1NEh7JZoK
爲什麼我便無法獲取變量的地址一個結構?
如果我有兩個int變量,一個門店價值,一個門店地址(指針),這樣的:http://play.golang.org/p/XhvKX-ifdn
我能得到這兩個變量的實際地址,但爲什麼結構不能?
fmt.Println
以更具可讀性的格式打印東西。如果你想真正看到地址,使用fmt.Printf
與%p
動詞:
fmt.Printf("%p\n", &a) // 0x10328000
fmt.Printf("%p -> %p\n", &b, b) // 0x1030e0c0 -> 0x10328000
非常感謝。我發現了一個有趣的事情,這是我的代碼:http://play.golang.org/p/J20Rwvzxxs – user3087000 2014-09-02 14:09:32
如果一個結構體實現了一個接口,當我們將一個指向這個結構體的實例的指針賦給一個接口變量時,在它的方法,在函數中它實際上獲取從該指針指向的值複製的整個值。 – user3087000 2014-09-02 14:12:59
如果我的理解正確,還是有問題? – user3087000 2014-09-02 14:13:54
關於您的評論中的「整個值複製」到答案:是的,使用「非指針方法 - 接收器」獲取結構複製。使用'指針方法 - 接收器',原始結構將被操作。看到[關於此的博客](http://nathanleclaire.com/blog/2014/08/09/dont-get-bitten-by-pointer-vs-non-pointer-method-receivers-in-golang/) – minghua 2016-08-02 16:00:31