Go에서 사용자 정의 유형으로 작업할 때 명명된 유형 어설션과 변환 간의 미묘한 차이를 이해하는 것이 중요합니다. 예를 들어 개념을 살펴보겠습니다.
사전 정의된 문자열 유형을 재정의하는 사용자 정의 유형 Answer를 정의하는 아래 코드 조각을 고려하세요.
<code class="go">type Answer string</code>
그런 다음 다음에서 Answer를 사용하려고 합니다. 문자열 유형을 기대하는 함수:
<code class="go">func acceptMe(str string) { fmt.Println(str) } func main() { type Answer string var ans Answer = "hello" // Assertion fails: cannot use ans (type Answer) as type string in function argument acceptMe(ans) // Type assertion fails as well: invalid type assertion: ans.(string) (non-interface type Answer on left) acceptMe(ans.(string)) // Conversion succeeds. acceptMe(string(ans)) }</code>
유형 어설션은 인터페이스에만 적용 가능합니다. 인터페이스를 사용하면 기본 유형이 달라질 수 있습니다. 실제 유형을 결정하기 위해 Go는 유형 어설션(x.(T)) 또는 유형 스위치(switch x := x.(type))를 사용합니다. 어설션은 어설션이 성공했는지 나타내는 부울 값을 반환합니다.
이 경우 Answer는 고정된 기본 유형(문자열)이 있는 명명된 유형입니다. 기본 유형이 알려져 있으므로 어설션이 필요하지 않습니다. string(ans)을 사용하여 답변 유형을 문자열로 변환하면 충분합니다.
위 내용은 Go에서 사용자 정의 유형에 대한 유형 어설션과 변환의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!