Я хочу преобразовать uint8
в int
, поэтому я пишу const 0xfc
и пытаюсь использовать int8(0xfc)
для его преобразования. Однако код вызывает ошибку:
package main
import (
"fmt"
)
func main() {
a := int8(0xfc) // compile error: constant 252 overflows int8
b := a
fmt.Println(b)
}
Но если я отложу преобразование типов после присваивания, код может обойтись.
package main
import (
"fmt"
)
func main() {
a := 0xfc
b := int8(a) // ok
fmt.Println(b)
}
Мой вопрос:
- Есть ли разница между этими двумя кодами?
- Почему первый вызывает ошибку компиляции?