2017-03-04 3 views
1

Go Newbie質問:私はデフォルト値で次の構造体を初期化しようとしています。私は "Uri"が文字列であり、文字列(*文字列)へのポインタではない場合に動作することを知っています。しかし、私は構造体の2つのインスタンスを比較するためにこのポインタが必要です。ここでは、Uriは設定されていなければnilになります。 jsonファイルからコンテンツをデマールします。しかし、このような構造体を「静的デフォルト」として適切に初期化するにはどうすればよいですか?struct内の文字列ポインタを初期化する

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 } 
}