make 및 새 작업
make는 내장 유형(맵, 슬라이스 및 채널)의 메모리 할당에 사용됩니다. new는 다양한 유형의 메모리 할당에 사용됩니다. (추천 학습: go)
내장 함수 new는 본질적으로 다른 언어의 같은 이름의 함수와 동일한 기능을 갖습니다. new(T)는 0 값으로 채워진 T 유형의 메모리 공간을 할당합니다. 그리고 해당 주소, 즉 *T 유형의 값을 반환합니다.
Go 용어에서는 T 유형의 새로 할당된 0 값에 대한 포인터를 반환합니다. 한 가지는 매우 중요합니다.
new返回指针。
내장 함수 make(T, args)에는 new(T)와 다른 함수가 있습니다. make는 슬라이스, 맵 및 채널만 생성하고 초기 값(0이 아닌 값)을 반환할 수 있습니다. ) *T가 아닌 T를 입력하세요. 기본적으로 이 세 가지 유형이 다른 점은 사용하기 전에 데이터 구조에 대한 참조를 초기화해야 한다는 것입니다.
예를 들어, 슬라이스는 데이터(내부 배열)에 대한 포인터, 길이 및 용량을 포함하는 세 가지 항목 설명자이며 이러한 항목이 초기화될 때까지 슬라이스는 nil입니다. 슬라이스, 맵 및 채널의 경우 make는 내부 데이터 구조를 초기화하고 적절한 값으로 채웁니다.
make返回初始化后的(非零)值。
코드 예:
var map1 map[string]string = make(map[string]string) fmt.Println(map1) fmt.Println(map1 == nil) var map2 *map[string]string = new(map[string]string) fmt.Println(map2) fmt.Println(map2 == nil) fmt.Println(*map2) fmt.Println(*map2 == nil) // var map1 map[string]string map1["aaa"] = "AAA" map1["bbb"] = "BBB" map1["ccc"] = "CCC" fmt.Println(map1) fmt.Println(len(map1))
출력:
map[] false &map[] false map[] true map[bbb:BBB ccc:CCC aaa:AAA] Success: process exited with code 0.
위 내용은 golang make와 new의 차이점의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!