> 백엔드 개발 > Golang > Go 별칭 유형 변환: 기본 데이터의 전체 복사본을 생성합니까?

Go 별칭 유형 변환: 기본 데이터의 전체 복사본을 생성합니까?

Barbara Streisand
풀어 주다: 2024-12-21 16:20:10
원래의
329명이 탐색했습니다.

Go Alias Type Conversion: Does it Create Deep Copies of Underlying Data?

Go에서 별칭 유형 변환: 복사본을 생성합니까?

Go에서 별칭 유형으로 작업할 때 별칭과 기본 유형 간의 변환 결과가 궁금할 수 있습니다. 사본으로. 이 질문을 살펴보기 위해 예를 분석해 보겠습니다.

type MyString string
var s = "very long string"
var ms = MyString(s)
var s2 = string(ms)
로그인 후 복사

질문: ms 또는 s2는 s의 완전한 복사본입니까([]byte(s)와 유사). 단순히 문자열 구조의 복사본을 나타냅니다(원본에 대한 포인터 보유). value)?

답변:

Go 변환 사양에 따르면 "다른 모든 변환은 유형만 변경하고 x 표현은 변경하지 않습니다." 따라서 사용자 정의 유형의 기본 유형으로 변환하거나 그 반대로 변환해도 복사본이 생성되지 않습니다. 이 경우 ms와 s2는 s의 복사본이 아니라 단순히 동일한 기본 값의 다른 표현입니다.

별칭 유형을 함수에 전달:

별칭을 전달할 때 함수에 입력하면 값의 복사본이 만들어집니다. 그러나 복사본은 실제로 기본 값의 새 인스턴스를 생성하지 않습니다. 예:

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

여기서 함수에 전달되는 복사본은 ms가 참조하는 실제 문자열이 아닌 MyString 설명자의 복사본입니다.

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

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