猿问

类型转换和类型断言有什么区别?

之间的主要区别是什么:

  1. v = t.(aType) // type assertion

  2. v = aType(t) // type conversion

我应该在哪里使用类型断言或类型转换?


蛊毒传说
浏览 208回答 1
1回答

偶然的你

类型断言断言t(接口类型)实际上是 aaType并且t将是aType; 即包裹在t接口中的那个。例如,如果你知道你var reader io.Reader实际上是一个*bytes.Buffer你可以做的var br *bytes.Buffer = reader.(*bytes.Buffer)。类型转换将一种(非接口)类型转换为另一种类型,例如 a var x uint8to 和 int64 like var id int64 = int64(x)。经验法则:如果您必须将具体类型包装到接口中并希望恢复具体类型,请使用类型断言(或类型切换)。如果您需要将一种具体类型转换为另一种,请使用类型转换。
随时随地看视频慕课网APP

相关分类

Go
我要回答