假设我有一个int64变量(或其他整数大小)表示一个有效的unicode代码点,并且我想在Go中将其转换为一个符文,我该怎么办?
在C中,我会使用类似如下的类型转换:
c = (char) i; // 7 bit ascii only但在Go中,类型断言将不起作用:
c, err = rune.( i)有什么建议吗?
发布于 2013-04-13 09:44:07
你只想要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) // succeeds
z = x.(string) // compiles, but fails at runtime 发布于 2013-04-13 12:08:29
在Go中,你想做一个转换。
Conversions
转换是T(x)形式的表达式,其中T是类型,x是可以转换为T类型的表达式。
转换=类型"(“表达式")”。
在以下任何一种情况下,非常量值x都可以转换为T类型:
x可赋值给具有相同基础types.x's类型的types.x's类型和具有相同基础types.x‘s类型的T,而T是未命名的指针类型,并且它们的指针基类型具有相同的基础types.x’s类型,并且types.x和T都是整型或浮点类型,并且T都是复杂T是整型或哈希类型[]byte或D33x是字符串,[]rune.是[]byte或T,/code>和T是字符串
您希望将int、int32或int64类型的x转换为rune类型的T,这是int32类型的别名。x的类型和T都是整数类型。
因此,允许使用T(x),并将其编写为rune(x),例如c = rune(i)。
https://stackoverflow.com/questions/15983279
复制相似问题