첫 번째 유형 어설 션은 유형을 func (int) bool로 명시 적으로 선언 할 때 작동합니다. 그러나 두 번째는 유형 별명을 사용하여 SomethingFuncy Panics를 사용합니다.
package main import "fmt" type somethingFuncy func(int) bool func funcy(i int) bool { return i%2 == 0 } func main() { var a interface{} = funcy _ = a.(func(int) bool) // Works fmt.Println("Awesome -- apparently, literally specifying the func signature works.") _ = a.(somethingFuncy) // Panics fmt.Println("Darn -- doesn't get here. But somethingFuncy is the same signature as func(int) bool.") }
캐스팅과 달리 ASSERTED의 실제 유형을 엄격하게 비교합니다. 따라서, 유형 별명 Something -Funcy는 func (int) bool과 동일한 시그니처를 공유하지만 별개의 유형으로 간주됩니다.
이 비교는 정확한 유형 일치가 필요하기 때문에 유형 별칭을 사용할 때 실패합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3