ホームページ >バックエンド開発 >Golang >追加の変数を定義せずに、Go 構造体リテラルの「bool」ポインタに「true」を割り当てるにはどうすればよいですか?

追加の変数を定義せずに、Go 構造体リテラルの「bool」ポインタに「true」を割り当てるにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-03 11:14:10833ブラウズ

How Can I Assign `true` to a `bool` Pointer in a Go Struct Literal Without Defining Extra Variables?

Go 構造体リテラルで True を Bool ポインターに代入する

Go プログラマは、構造体リテラル内で bool ポインターを true に設定する必要がある状況によく遭遇します。 。この記事では、新しい識別子を定義せずにこの目標を達成するために利用可能なオプションについて詳しく説明します。

提供されたコード スニペットは、ブール ポインターを受け取る関数を示しており、is フィールドを構造体リテラル自体で true に設定します。

設定のアプローチTrue:

1.配列のインデックス付け (最適ではありません):

h := handler{is: &[]bool{true}[0]}

このメソッドでは、単一の bool を true に設定して配列を作成し、インデックスを付けて、インデックス付き要素のアドレスを割り当てます。追加の変数は必要ありませんが、ボイラープレートとメモリの消費が欠点です。

2.ポインターを返すヘルパー関数:

func newTrue() *bool {
    b := true
    return &b
}

このアプローチでは、true bool 変数のアドレスを返すヘルパー関数が導入されます。これは次のように使用されます:

h := handler{is: newTrue()}

これにより、よりクリーンでカスタマイズ可能なソリューションが提供されます。

3.クロージャ付き匿名関数:

h := handler{is: func() *bool { b := true; return &b }()}

匿名関数手法では、クロージャを使用して目的の機能を提供します。

4.クロージャ付き関数オプション:

h := handler{is: func(b bool) *bool { return &b }(true)}

このオプションは、ブール値が引数として渡される関数プログラミング アプローチを提供します。

最適な解決策:

ほとんどのシナリオにとって最も最適な解決策は、newTrue() のようなヘルパー関数を使用することです。構造体リテラルで bool ポインターを true に設定するための簡潔で再利用可能な方法。

以上が追加の変数を定義せずに、Go 構造体リテラルの「bool」ポインタに「true」を割り当てるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。