2016-05-04 49 views

回答

4

這是untyped constants一個例子。從文檔:

分別使用布爾,數字或字符串類型的操作數的任何類型的布爾值,數值和字符串常量都可以用作操作數。除了移位操作外,如果二元操作的操作數是不同類型的非類型常量,則操作和非布爾操作的結果將使用此列表中稍後出現的類型:整數,符文,浮點,複數。

由於'a'是一個無類型常量,因此編譯器會嘗試將它轉換爲與其他操作數相當的類型。在這種情況下,它被轉換爲byte

你可以看到,當符文常數不適合單個字節這不工作:

package main 

import (
    "fmt" 
) 

func main() { 
    const a = '€' 
    fmt.Println("a"[0] == a) // constant 8364 overflows byte 
} 

https://play.golang.org/p/lDN-SERUgN

0

符文字面'a'代表一個符文常數。常數可能是無類型的。簡稱申報表r := 'a'符文常數'a'隱含轉換爲其默認類型rune。但是你可以通過賦值給類型變量來明確地轉換它。

var r byte = 'a' 

看到它的工作原理https://play.golang.org/p/lqMq8kQoE-

相關問題