この記事では、GO 言語でデータ構造を初期化する方法を紹介します。GO にはデータ構造を初期化するための 2 つのキーワードがあります。使い方を見てみましょう~皆さんの参考になれば幸いです。
GO はデータ構造を初期化するための 2 つのキーワードを提供します
ただし、場合によっては、中かっこを使用して直接初期化することもあります (例:
name := []string{"xiaomotong","bob","marry"}
上記の場合、入力する必要がある値は初期化中に明確に定義されています。) を使用できます。メソッドを使用しますが、仕事で初期化する場合、ほとんどの場合、データはまだ不明であり、ほとんどの場合、上記の 2 つのメソッドが引き続き使用されます。
make は golang によって提供されます。主に組み込みデータ構造の初期化に使用されます。カスタム データ構造は初期化できません。make で初期化できるデータ型は次のとおりです:
#たとえば、初期化するときは次のように記述できます。
strs := make([]string, 0, 10)myMap := make(map[string]string, 10)ch := make(chan struct{}, 10)
make のソース コードの説明を見ると、make が上記の ## の作成と初期化をサポートしていることがわかります。 #3 種類
##説明によると、make
の戻り値の型は、パラメータを入力します。スライス タイプを入力すると、戻り値はスライス タイプになり、他のタイプを入力します。対応する戻り値も期待するタイプです。問題ありません。new
Careful Fat Fish では、前述したように、make は golang が提供する組み込みデータ構造の初期化にのみ適していることがわかります。カスタム データ構造の場合は制限されています。まだ必要です new
アクションを実行しましたnew を使用してデータ構造を初期化するには、次のように記述できます:
2 を使用して構造をカスタマイズするメンバー、年齢、名前
type T struct{ age int name string}func main(){ t := new(T) fmt.Println("t.name == ",t.name) fmt.Println("t.age == ",t.age)}
# go run main.got.name ==t.age == 0
もちろん、次のように書くこともできます:
func main(){ a := new(int) fmt.Println("a == ",a) fmt.Println("*a == ",*a)}
プログラムの実行結果は次のとおりです。
# go run main.goa == 0xc420018078 *a == 0
新しいソース コードの説明を見てください
golang ソース コードには、 new の最初のパラメータは値ではなくデータ型であり、new
戻り値はパラメータの型に従ってゼロ値メモリを割り当てるポインタです。上で見た new によって出力されるデータ構造は、対応する型のゼロ値ですmake と new の違い
最後に、make と new to の違いを整理しましょう。印象を深める
##chan
make は
Type型の参照を返し、new は
*Type以上がGO のデータ構造を初期化する方法について話しましょう (コード例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。