web-dev-qa-db-ja.com

構造体の文字列ポインタを初期化する

Go Newbieの質問:次の構造体をデフォルト値で初期化しようとしています。 「Uri」がストリングであり、ストリング(* string)へのポインターではない場合に機能することを知っています。しかし、構造体の2つのインスタンスを比較するには、このポインターが必要です。 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
12
Mandragor

定数値の(ポイントする)アドレスを取得することはできないため、初期化は失敗します。変数を定義してそのアドレスを渡すと、例が機能します。

type Config struct {
  Uri       *string
}

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