> 백엔드 개발 > Golang > Go의 별칭 유형 변환은 복사본을 생성합니까?

Go의 별칭 유형 변환은 복사본을 생성합니까?

DDD
풀어 주다: 2024-12-23 04:52:14
원래의
773명이 탐색했습니다.

Does Go's Alias Type Conversion Create Copies?

Go에서 별칭 간 할당이 복사를 유발합니까?

Go에서는 별칭을 사용하여 사용자 정의 유형을 정의할 수 있습니다. 이러한 별칭 유형 간의 변환으로 인해 복사본이 발생하는지 아니면 단순한 구조적 변경이 발생하는지에 대한 우려가 있습니다.

다음 예를 고려하세요.

type MyString string 
var s = "very long string"
var ms = MyString(s)
var s2 = string(s)

// Are ms or s2 a full copy of s?
로그인 후 복사

답변:

Go의 변환 규칙에 따르면 숫자 유형이나 문자열 간의 일정하지 않은 변환은 표현으로 인해 런타임 비용이 발생할 수 있습니다. 변화. 그러나 별칭 간의 변환과 같은 다른 모든 변환은 사본을 생성하지 않고 원래 표현을 보존합니다

따라서 ms와 s2는 모두 s의 전체 복사본이 아니지만 동일한 기본 값을 참조합니다. .

함수 호출에 미치는 영향:

통과 시 값을 함수에 추가하면 일반적으로 복사본이 생성됩니다. 그러나 이는 별칭 유형에는 적용되지 않습니다. 별칭 유형의 값을 함수 매개변수에 할당해도 복사가 트리거되지 않습니다.

func foo(s MyString){
  ...
}
foo(ms) // No copy is made when passing ms to foo()
로그인 후 복사

요약하면 별칭 유형 간의 변환은 기본 값의 복사본을 생성하지 않지만 이 원칙은 값 전달로 확장되지 않습니다. 일반적으로 복사를 하는 기능입니다.

위 내용은 Go의 별칭 유형 변환은 복사본을 생성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿