ホームページ > バックエンド開発 > Golang > GO のデータ構造を初期化する方法について話しましょう (コード例付き)

GO のデータ構造を初期化する方法について話しましょう (コード例付き)

藏色散人
リリース: 2023-01-16 20:29:47
転載
3427 人が閲覧しました

この記事では、GO 言語でデータ構造を初期化する方法を紹介します。GO にはデータ構造を初期化するための 2 つのキーワードがあります。使い方を見てみましょう~皆さんの参考になれば幸いです。

golang を使用したコーディング中にデータ構造を初期化するにはどうすればよいですか?

GO はデータ構造を初期化するための 2 つのキーワードを提供します

  • new
  • make

ただし、場合によっては、中かっこを使用して直接初期化することもあります (例:

name := []string{"xiaomotong","bob","marry"}
ログイン後にコピー

上記の場合、入力する必要がある値は初期化中に明確に定義されています。) を使用できます。メソッドを使用しますが、仕事で初期化する場合、ほとんどの場合、データはまだ不明であり、ほとんどの場合、上記の 2 つのメソッドが引き続き使用されます。

make

make は golang によって提供されます。主に組み込みデータ構造の初期化に使用されます。カスタム データ構造は初期化できません。make で初期化できるデータ型は次のとおりです:

  • slicelice
  • map hash table
  • channel チャネル

#たとえば、初期化するときは次のように記述できます。

    スライスを初期化し、 len 値、cap 値。これら 2 つの値に加えて、スライスの基礎となるデータ構造には、基礎となる配列を指すポインターもあります。
  • マップを初期化します。マップの最下層はhmap を指す構造体ポインター 構造体内 xdm の特定のメンバーに興味がある場合は、私の過去の記事を読むことができます
  • チャネル ch を初期化します。この ch は、hchan を指す構造体ポインターです。詳細については、私の過去の記事を参照してください。
strs := make([]string, 0, 10)myMap := make(map[string]string, 10)ch := make(chan struct{}, 10)
ログイン後にコピー

make のソース コードの説明を見ると、make が上記の ## の作成と初期化をサポートしていることがわかります。 #3 種類

##説明によると、GO のデータ構造を初期化する方法について話しましょう (コード例付き)make

の戻り値の型は、パラメータを入力します。スライス タイプを入力すると、戻り値はスライス タイプになり、他のタイプを入力します。対応する戻り値も期待するタイプです。問題ありません。

new

では、なぜ make でデータ構造を初期化するために new が必要なのでしょうか?

Careful Fat Fish では、前述したように、make は golang が提供する組み込みデータ構造の初期化にのみ適していることがわかります。カスタム データ構造の場合は制限されています。まだ必要です new

アクションを実行しました

new を使用してデータ構造を初期化するには、次のように記述できます:

2 を使用して構造をカスタマイズするメンバー、年齢、名前

    new を使用して T を初期化し、構造体へのポインタを返します
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
    ログイン後にコピー
    プログラムの実行結果によると、new はポインタを返し、これが指すメモリ アドレスに対応する値を返すことがわかります。ポインタはこの型の ゼロ値です

    新しいソース コードの説明を見てください

    golang ソース コードには、 new の最初のパラメータは値ではなくデータ型であり、GO のデータ構造を初期化する方法について話しましょう (コード例付き)new

    戻り値はパラメータの型に従ってゼロ値メモリを割り当てるポインタです。上で見た new によって出力されるデータ構造は、対応する型のゼロ値です

    make と new の違い

    最後に、make と new to の違いを整理しましょう。印象を深める

    make は組み込みデータ型の初期化にのみ使用できます

    #slice
    • map
      • ##chan

      • そして、new は任意のタイプのデータ (カスタム データ タイプを含む) を割り当てることができます
      • make は

        Type

        型の参照を返し、new は

        *Type
      • 型のポインタを返します。 【関連する推奨事項:
      Go ビデオ チュートリアル

    以上がGO のデータ構造を初期化する方法について話しましょう (コード例付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

  • 関連ラベル:
    ソース:learnku.com
    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
    最新の問題
    人気のチュートリアル
    詳細>
    最新のダウンロード
    詳細>
    ウェブエフェクト
    公式サイト
    サイト素材
    フロントエンドテンプレート