メイク機能に行く:スライス、マップ、チャンネルを作成する

目次

説明

構文とパラメーター

使用例

スライスを作成する

マップを作成する

チャネルを作成する

予防

makeとnewの違い


 

説明

make関数は、Goの組み込み関数であり、スライス、マップ、またはchanを初期化して、参照を返す関数です。makeは、スライス、マップ、およびチャネルを作成し、それらのインスタンスを返すためにのみ使用されます。

 

構文とパラメーター

関数シグネチャ

func make(t Type, size ...IntegerType) Type
名前 意味
t スライス、マップ、またはチャネルタイプ。
サイズ 整数型スライスは、さまざまな型に直面したときにさまざまな意味を持ちます。省略できるかどうかは、作成タイプに関係します。

使用例

スライスを作成する

make([]Type, len, cap)

キャップは省略できます。capを省略すると、デフォルトでlenと同じになります。さらに、cap> = len> = 0の条件を確立する必要があります。たとえば、lenとcapの両方が10であるint型スライスを作成します。

package main

import "fmt"

func main() {
	demo := make([]int, 10)
	fmt.Println("demo:", demo)
    // output: demo: [0 0 0 0 0 0 0 0 0 0]
	fmt.Println("len(demo):", len(demo))
    // output: len(demo): 10
	fmt.Println("cap(demo):", cap(demo))
    // output: cap(demo): 10
}

 

マップを作成する

make(map[keyType] valueType, size)

keyTypeはマップのキータイプを表し、valueTypeはマップの値タイプを表します。sizeは、マップのストレージ容量を示す整数パラメーターです。このパラメーターは省略できます。

package main

import "fmt"

func main() {
	demo := make(map[string]int)
	fmt.Println("demo:", demo)
	// output: demo: map[]
}

 

チャネルを作成する

make(chan Type, size)

makeを使用してチャネルを作成します。最初のパラメータは、チャネルタイプです。sizeは、バッファスロットのサイズを表します。これは、0以上のオプションの整数パラメータです。デフォルトのサイズは0です。バッファスロットが0でない場合は、チャネルが非同期チャネルであることを意味します。

package main

import "fmt"

func main() {
	demo := make(chan int, 10)
	fmt.Println("demo:", demo)
	// output: demo: map[]
	fmt.Println("len(demo):", len(demo))
	// output: len(demo): 0
	fmt.Println("cap(demo):", cap(demo))
	// output: cap(demo): 10
}

 

予防

makeとnewの違い

newの役割は、型(* T)へのポインターを初期化することです。新しい関数を使用してスペースを割り当てます。新しい関数に渡されるのは型であり、値ではありません。返されるのは、この新しく割り当てられたゼロ値へのポインタです。

makeの役割は、slice、map、またはchanを初期化し、参照(T)を返すことです。makeは、スライス、マップ、およびチャネルを作成し、それらのインスタンスを返すためにのみ使用されます。

おすすめ

転載: blog.csdn.net/TCatTime/article/details/111567560