假设我有一个 int64 变量(或其他整数大小)表示有效的 unicode 代码点,并且我想在 Go 中将其转换为符文,我该怎么办?
在 CI 中会使用类型转换,例如:
c = (char) i; // 7 bit ascii only
但是在 Go 中,类型断言不起作用:
c, err = rune.( i)
建议?
繁华开满天机
浏览 902回答 2
2回答
偶然的你
你只想要rune(i). 铸造是通过type(x).类型断言是不同的。当您需要从不太具体的类型(如interface{})转换为更具体的类型时,您可以使用类型断言。此外,在编译时检查强制转换,其中类型断言发生在运行时。以下是您如何使用类型断言:var ( x interface{} y int z string)x = 3// x is now essentially boxed. Its type is interface{}, but it contains an int.// This is somewhat analogous to the Object type in other languages// (though not exactly).y = x.(int) // succeedsz = x.(string) // compiles, but fails at runtime
在 Go 中,你想做一个转换。转化次数转换是形式为T(x)where Tis a type and xis an expression that can convert to type 的表达式T。Conversion = Type "(" Expression ")" .在以下任何一种情况下,非常量值x都可以转换为类型T:x可分配给T。x的类型并T具有相同的基础类型。x的类型并且T是未命名的指针类型,并且它们的指针基类型具有相同的底层类型。x的类型并且T都是整数或浮点类型。x的类型 和T都是复杂类型。x是整数或具有类型[]byte或[]rune并且T是字符串类型。x是一个字符串并且T是[]byte或[]rune。你要转换x,类型int,int32或int64以T类型rune,类型的别名int32。x的类型并且T都是整数类型。因此,对于您的示例,T(x)允许并写入.rune(x)c = rune(i)