질문:
Golang은 Bjarne Stroustrup이 C 11에 정의한 이동 의미 체계를 지원합니까? , 불필요한 것을 피하기 위해 복사?
답변:
C와 달리 Go는 "이동 생성자" 또는 "이동 할당"과 같은 특정 키워드를 통해 이동 의미 체계를 명시적으로 지원하지 않습니다. 그러나 특정 내장 유형에 대한 참조 의미 개념을 활용하여 유사한 최적화 이점을 얻습니다.
Go의 참조 의미:
Go의 모든 것이 전달됩니다. 포인터를 포함하여 값으로. 그러나 "참조 유형"으로 알려진 일부 내장 유형은 외부 데이터 구조에 대한 참조를 보유합니다.
참조 유형의 값이 복사되면 데이터 구조 자체가 아닌 기본 데이터 구조에 대한 참조가 복사됩니다. 이렇게 하면 메모리 사용량이 최적화되고 복사 오버헤드가 줄어듭니다.
슬라이스의 예:
배열과 슬라이스를 고려하세요.
type Array [5]int type Slice []int
배열은 다음과 같습니다. 값 유형이고 슬라이스는 참조 유형입니다. 배열을 다른 배열에 할당하는 경우:
arr1 := Array{1, 2, 3, 4, 5} arr2 := arr1
arr2는 arr1의 독립 복사본입니다. 그러나 슬라이스를 다른 슬라이스에 할당하는 경우:
slice1 := Slice{1, 2, 3, 4, 5} slice2 := slice1
slice2는 Slice1과 기본 데이터 구조를 공유합니다.
이점:
참조 Go의 의미는 다음과 같습니다.
위 내용은 Golang은 참조 의미론을 통해 이동 의미론과 유사한 최적화를 달성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!