类型转换有哪些须要注意的地方

类型转换的语法:T(x)。ui

其中T叫作目标类型,x叫作源值,能够是一个变量,也能够是一个表明值的常量,还能够是一个单值的表达式。x的类型叫作源类型。编码

Go语言规范中规定了哪些从源类型到目标类型的转换是合法的,编译器会帮咱们检查出这些不合法的错误转换,这些咱们不须要关心。咱们须要关心的是那些Go语言编译器很难检测出来的问题。code

  • 对于整数类型值,整数长廊之间的类型转换,原则上只要源值在目标类型的可表示范围内就是合法的。

举个栗子:把无类型的常量255转换成uint8类型的值。字符串

uint8(255)
  • 须要特别注意的是,源整数类型的可表示范围较大,而目标类型的可表示范围较小的状况。

举个栗子:编译器

var srcInt = int16(-255)
dsInt := int8(srcInt)

dsInt 的值如今变成了 1string

  • 当把一个浮点数类型的值转换为整数类型时,前者的小数部分会被所有截掉。编译

  • 直接把一个整数值转换为一个string类型的值是可行的,可是须要注意:被转换的整数值应该能够表明一个有效的Unicode代码点,不然转换的结果将会是"�"(仅由高亮的问号组成的字符串值)。class

例如:变量

string(-1)
  • string类型和各类切片类型之间互转时须要注意:一个string类型向[]byte类型转换时,表明着以UTF-8编码的字符串会被拆分红零散的独立的字节。

举例子语法

fmt.Println(len("我"))

结果是3。 Unicode字符集中除了ASCII以外的部分,编码时3个字节才能表示一个字符。

  • 一个值从string类型向[]rune类型转换时,表明着字符串会被拆分红一个个Unicode字符。
相关文章
相关标签/搜索