10

假设我有一个表示有效 unicode 代码点的 int64 变量(或其他整数大小),并且我想在 Go 中将其转换为符文,我该怎么办?

在 CI 中会使用类型转换,例如:

c = (char) i;  // 7 bit ascii only

但是在 Go 中,类型断言不起作用:

c, err = rune.( i)

建议?

4

2 回答 2

20

你只是想要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-13T01:44:06.980 回答
3

在 Go 中,您想要进行转换。

转换

转换是形式的表达式T(x)where Tis 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,int32int64, to Tof type转换为 typerune的别名int32x的类型 和T都是整数类型。

因此,T(x)被允许并被写入rune(x),例如,c = rune(i)

于 2013-04-13T04:08:28.910 回答