構造体ポインターの初期化
文字列ポインターを使用した構造体の初期化は、特にデフォルト値を次のようにする必要がある場合に注意が必要です。 nil.
問題
初期化で定数文字列を使用して、文字列ポインターをデフォルト値として持つ構造体を初期化しようとすると、エラーが発生します:
cannot use "string" (type string) as type *string in field value
解決策
へnil の可能性がある文字列ポインターを使用して構造体を初期化する場合は、定数値ではなく変数のアドレスをポインターに割り当てる必要があります。動作する修正コードは次のとおりです。
type Config struct { Uri *string } func init() { v := "my:default" var config = Config{ Uri: &v } }
この場合、変数 v はデフォルトの文字列値を保持します。 & 演算子を使用してそのアドレスを取得し、それを Uri に割り当てることで、比較に使用でき、明示的に設定されていない場合は nil にすることができる文字列ポインターを作成しています。
以上が文字列ポインターを使用して構造体を初期化し、Nil 値を許可する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。