[解決済み】Goのコンストラクタ
2022-04-01 01:21:25
質問
構造体がありますが、適切なデフォルト値で初期化されるようにしたいです。
一般的にはコンストラクタを使いますが、goは伝統的な意味でのOOPではないので、真のオブジェクトではなく、コンストラクタを持ちません。
initメソッドに気づきましたが、それはパッケージレベルのものです。 構造体レベルで使える似たようなものは他にないのでしょうか?
もしそうでなければ、Goでこの種のもののために受け入れられているベストプラクティスは何でしょうか?
どのように解決するのですか?
実は、ベストプラクティスは2つあります。
- 構造体のゼロ値を賢明なデフォルトにする。(これは、従来のオペレーティングシステムから来たほとんどの人にとっては奇妙に見えますが、多くの場合うまくいき、本当に便利です)。
-
関数を用意する
func New() YourTyp
または、そのような型がパッケージ関数に複数ある場合func NewYourType1() YourType1
などがあります。
型のゼロ値が使用可能かどうかを文書化します(この場合、いずれかの
New...
関数を使用します。("伝統主義者"のために、おっと。ドキュメントを読まない人は、たとえ未定義の状態のオブジェクトを作ることができなくても、あなたの型を正しく使うことはできないでしょう)。
関連
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Lua スクリプトがエラー "nil値(フィールド 'deposit')を呼び出そうとした" をスローします。
-
[解決済み] 関数型プログラミング言語と命令型プログラミング言語の違いは何ですか?
-
[解決済み] パラメータと戻り値におけるポインタと値の比較
-
[解決済み】関数型プログラミングはGoFデザインパターンに取って代わるか?
-
[解決済み】UMLの矢印の説明
-
[解決済み】Goのコンストラクタ
-
[解決済み】アスペクト指向プログラミングとオブジェクト指向プログラミングの比較
-
[解決済み】オブジェクト指向のパラダイムにおける疎結合と密結合の違いは何ですか?
-
[解決済み】OOP vs Functional Programming vs Procedural [クローズド]。