2014-09-02 64 views
-1

我很困惑Go的結構。Golang - 內部結構如何實現?

這是代碼:http://play.golang.org/p/b1NEh7JZoK

爲什麼我便無法獲取變量的地址一個結構?

如果我有兩個int變量,一個門店價值,一個門店地址(指針),這樣的:http://play.golang.org/p/XhvKX-ifdn

我能得到這兩個變量的實際地址,但爲什麼結構不能?

+0

關於您的評論中的「整個值複製」到答案:是的,使用「非指針方法 - 接收器」獲取結構複製。使用'指針方法 - 接收器',原始結構將被操作。看到[關於此的博客](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

回答

3

fmt.Println以更具可讀性的格式打印東西。如果你想真正看到地址,使用fmt.Printf%p動詞:

fmt.Printf("%p\n", &a)   // 0x10328000 
fmt.Printf("%p -> %p\n", &b, b) // 0x1030e0c0 -> 0x10328000 

Playground

+0

非常感謝。我發現了一個有趣的事情,這是我的代碼:http://play.golang.org/p/J20Rwvzxxs – user3087000 2014-09-02 14:09:32

+1

如果一個結構體實現了一個接口,當我們將一個指向這個結構體的實例的指針賦給一個接口變量時,在它的方法,在函數中它實際上獲取從該指針指向的值複製的整個值。 – user3087000 2014-09-02 14:12:59

+0

如果我的理解正確,還是有問題? – user3087000 2014-09-02 14:13:54