[解決済み】Goの構造体にデフォルト値を設定する方法
2022-04-10 17:45:09
質問
以下の質問に対する答えやテクニックは複数存在します。
- golang の構造体にデフォルト値を設定する方法は?
- golang で構造体を初期化する方法
いくつかの回答がありますが、さらなる議論が必要です。
解決方法は?
-
構造体を取得するメソッドを強制的に作成する(コンストラクタの方法)。
から この記事 :
良いデザインは、型を非エクスポートにすることですが、次のようなエクスポートされたコンストラクタ関数を提供することです。
NewMyType()
で、構造体/型を適切に初期化することができます。また、コンクリート型ではなくインターフェイス型を返し、そのインターフェイスには他の人があなたの値に対して行いたいことがすべて含まれている必要があります。そして、あなたの具象型はもちろんそのインターフェイスを実装しなければなりません。これは、単純に型自体を非エクスポートにすることで実現できます。関数NewSomethingやフィールドText、DefaultTextをエクスポートすることはできますが、構造体型somethingをエクスポートしないようにすればよいのです。
-
また、自分のモジュール用にカスタマイズする方法として デフォルト値を設定するためのConfig構造体 (リンク先のオプション5)。しかし、良い方法とは言えません。
関連
-
[解決済み] GOBINが設定されていない:go installを実行できない
-
[解決済み] C言語で構造体の配列を作るには?
-
[解決済み] HashMapを直接(リテラルに)初期化する方法は?
-
[解決済み] HashSetの値を構造的に初期化する方法は?
-
[解決済み] 構造体変数をコンソールに表示するには?
-
[解決済み] ミュータブル構造体はなぜ "悪 "なのか?
-
[解決済み] Goでオブジェクトの型を見つけるには?
-
[解決済み] パラメータと戻り値におけるポインタと値の比較
-
[解決済み】C++で配列の全要素を1つのデフォルト値で初期化する?
-
[解決済み] C#の配列に単一の値を入力/インスタンス化する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] GolangパッケージがGOROOTにない(/usr/local/go/src/packageName) [閉じた]。
-
[解決済み] go言語でUUIDを生成する方法はありますか?
-
[解決済み] go install` は `go.mod` にレコードを追加します。
-
[解決済み] golangでnilはどういう意味ですか?
-
[解決済み] Goで部分文字列を抽出する
-
[解決済み] GOPATHとGOROOTの値はどうすればよいですか?
-
[解決済み] Goの:=と=の演算子の違い
-
[解決済み】関数宣言の構文:関数名の前に括弧でくくられたもの
-
[解決済み】データ(型インターフェース{})を文字列に変換できない:型アサーションが必要
-
[解決済み】スライスの最後の要素を取得する方法は?