將uint8 轉換為int8
在Go 中,將無符號8 位元整數(uint8) 轉換為有符號8 位元整數( int8) 可能會導致錯誤。讓我們探討一下原因。
考慮以下程式碼:
<code class="go">package main import "fmt" func main() { a := int8(0xfc) // compile error fmt.Println(a) }</code>
此程式碼會引發編譯時錯誤:「constant 252 溢位 int8。」要理解這個問題,我們需要參考Go的常數表達式規則。
根據語言規範,常數表達式必須始終由常數類型的值表示。在這種情況下,0xfc 太大,無法放入 int8,其範圍為 -128 到 127。
如果我們延遲型別轉換,如下所示,程式碼編譯時不會出現錯誤:
<code class="go">package main import "fmt" func main() { a := 0xfc b := int8(a) // ok fmt.Println(b) }</code>
<code class="go">var b byte = 0xff i32 := int32(int8(b))</code>
以上是為什麼在 Go 中將 uint8 轉換為 int8 會導致錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!