我一直在玩弄去,我碰到了圍棋的(非?)功能,同時運行下面的代碼:爲什麼我必須將整數轉換爲float64才能匹配?
a := 1 //int
b := 1.0 //float64
c := a/b //should be float64
當我跑這我得到以下運行時錯誤:
invalid operation: a/b (mismatched types int and float64)
我認爲GoLang應該和類型推斷相當不錯。爲什麼我需要寫:
c := float64(a)/b //float64
一般來說,給定兩個數字類型,c應該被推斷爲包含兩者的最小類型。我不認爲這是一個疏忽,所以我只是想弄明白爲什麼這個行爲是決定的。僅出於可讀性的原因?或者,我的建議行爲會在語言或其他方面造成某種邏輯不一致?
另請參見[圍棋博客:常量(https://blog.golang.org/constants)。在你的具體例子中,使'a'成爲一個無類型常量(即'const i = 1')將避免顯式轉換。 –
@DaveC是的,我昨天晚上讀到了。這是一個很好的閱讀,併爲我清除了一些細節。 – breeden