次のGoコードを検討する方法:
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.") }
最初のタイプアサーションは、型をFUNC(int)boolとして明示的に宣言するときに機能します。ただし、タイプエイリアスを使用して2番目のものは、somethingfuncyパニックを使用します。したがって、func(int)boolと同じ署名を共有しているものの、タイプエイリアスの何かが異なるタイプと見なされます。 var a interface {} = funcy Switch V:= a。(タイプ){ case func(int)bool: // func(int)boolとして正常にアサートされたタイプ ケースSomethingfuncy: //順番に、何かを正常にアサートします デフォルト: //タイプアサーションが失敗しました } }
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3