類型轉換有哪些須要注意的地方

類型轉換的語法: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字符。
相關文章
相關標籤/搜索