1
我試圖創建元素的映射。我想用一個指針而不是一個整數作爲關鍵。問題是...我一直得到相同的指針。不管我創造了多少次。爲什麼是這樣?如何獲得真正的指針,如果可能的話,不使用不安全的軟件包。Go結構指針不唯一
package main
import (
"fmt"
)
type Thingy struct{}
var things map[*Thingy]int
func main() {
things = make(map[*Thingy]int)
thing1 := new(Thingy)
tracePointer("thing1", thing1)
things[thing1] = 1
thing2 := new(Thingy)
tracePointer("thing2", thing2)
things[thing2] = 2
thing3 := &Thingy{}
tracePointer("thing3", thing3)
things[thing3] = 3
fmt.Printf("Amount of things: %d\n", len(things))
}
func tracePointer(identifier string, obj interface{}) {
fmt.Printf("%s pointer: %p\n", identifier, obj)
}
輸出繼電器:
thing1 pointer: 0x546570
thing2 pointer: 0x546570
thing3 pointer: 0x546570
Amount of things: 1
指針空'結構{}'變量並不總是有相同的地址:如果他們是更大的數據結構的一部分,而不是獨立分配,他們的地址將是結構中的某處點。例如。 http://play.golang.org/p/51_PhqDNhk – 2014-09-22 05:31:57