假设我有一个表示有效 unicode 代码点的 int64 变量(或其他整数大小),并且我想在 Go 中将其转换为符文,我该怎么办?
在 CI 中会使用类型转换,例如:
c = (char) i; // 7 bit ascii only
但是在 Go 中,类型断言不起作用:
c, err = rune.( i)
建议?
假设我有一个表示有效 unicode 代码点的 int64 变量(或其他整数大小),并且我想在 Go 中将其转换为符文,我该怎么办?
在 CI 中会使用类型转换,例如:
c = (char) i; // 7 bit ascii only
但是在 Go 中,类型断言不起作用:
c, err = rune.( i)
建议?
你只是想要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
在 Go 中,您想要进行转换。
转换是形式的表达式
T(x)
whereT
is a type 并且x
是可以转换为 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
, of type int
,int32
或int64
, to T
of type转换为 typerune
的别名int32
。x
的类型 和T
都是整数类型。
因此,T(x)
被允许并被写入rune(x)
,例如,c = rune(i)
。