2017-03-04 80 views
1

Go新手問題:我正在嘗試使用默認值初始化以下結構。我知道,如果「Uri」是一個字符串而不是指向字符串(*字符串)的指針,它就可以工作。但是我需要這個指針來比較結構的兩個實例,如果沒有設置,Uri將是零。當我從一個json文件中取消內容時。但是,我怎樣才能正確地初始化這樣一個結構作爲「靜態默認」?上述初始化結構中的字符串指針

type Config struct { 
    Uri  *string 
} 

func init() { 
    var config = Config{ Uri: "my:default" } 
} 

代碼失敗,

cannot use "string" (type string) as type *string in field value 

回答

6

這是不可能得到一個恆定值,這就是爲什麼你的初始化失敗的地址(以點)。如果你定義一個變量並傳遞它的地址,你的例子就可以工作。

type Config struct { 
    Uri  *string 
} 

func init() { 
    v := "my:default" 
    var config = Config{ Uri: &v } 
}