슬라이스 유형을 변환할 수 없는 이유
제공된 코드 세그먼트에서와 같이 한 유형의 슬라이스를 다른 유형으로 변환하려고 할 때 , Go는 오류를 발생시킵니다. 이 오류는 Go 사양에 정의된 특정 유형 변환 규칙으로 인해 발생합니다.
슬라이스의 기본 유형이 해당 요소의 기본 유형과 직접적인 관련이 없기 때문에 오류가 발생합니다. Foo와 Bar의 기본 유형은 동일하지만 Foo와 Bar 요소를 포함하는 슬라이스의 기본 유형은 다릅니다.
Go의 할당 가능성 규칙에 따르면 []Foo 유형의 값은 유형의 변수에 할당될 수 없습니다. []술집. 이러한 불일치로 인해 변환 오류가 발생합니다.
이 문제를 해결하려면 중간 데이터 구조를 통해 변환을 수행할 수 있습니다. 예를 들어, 다음 코드는 작동합니다:
<code class="go">type Foo struct{ A int } type Bars []Foo func main() { foos := []Foo{Foo{1}, Foo{2}} bars := Bars(foos) fmt.Println(bars) } </code>
출력:
[{1} {2}]
또한 안전하지 않은 패키지를 사용하면 유형 안전 검사를 우회하고 변환을 허용할 수 있습니다. 그러나 안전하지 않은 패키지는 성능과 복잡성이 주요 관심사인 예외적인 경우에만 주의해서 사용해야 합니다.
위 내용은 Go에서 서로 다른 요소 유형의 슬라이스 간에 직접 변환할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!