Golangでnewとmakeの違いは何ですか?

Go言語では、newとmakeはメモリを割り当てるための2つの組み込み関数です。

  1. 新しい関数:
  2. 新しい関数は、値のポインタを割り当てて初期化し、そのポインタを返します。
  3. 新しい関数は、1つの型を引数として受け取り、その型のポインタを返す。
  4. メモリの割り当てはゼロに設定され、つまりすべてのビットがゼロ値に設定されています。
  5. new 関数は、新しく割り当てられたゼロ値を指すポインタを返します。
  6. 例えば:
  7. var p *int
    p = new(int)
    *p = 42
    fmt.Println(*p) // 出力: 42
  8. make関数:
  9. make 関数は、組み込み参照型(スライス、マップ、チャネルなど)のオブジェクトを作成するために使用されます。
  10. make関数の引数は型と長さ(オプション、チャネルには適用されない)です。
  11. make 関数は、その型の初期化された非ゼロ値を返します。
  12. 例:
  13. var s []int
    s = make([]int, 5, 10)
    s[0] = 1
    fmt.Println(s) // 表示:[1 0 0 0 0]

以上の理由から、new関数はゼロ値を指すポインタを返し、make関数は初期化されたゼロでない値を返す。

bannerAds