0
var x uint64 = 257
var y int = 257
fmt.Println("rv1 is ", byte(x)) // ok
fmt.Println("rv2 is ", byte(y)) // ok
fmt.Println("rv3 is ", byte(257)) // constant 257 overflows byte
fmt.Println("rv4 is ", byte(int(257))) // constant 257 overflows byte
これは変です。バイトをintに変換する
これらのすべてがintをバイトに変換しているため、すべてがエラーである必要があります。
ケース1,2は大丈夫です!
どのようにすることができますか?
これが言語の仕組みです。 Tour of Goや言語仕様の定数については相談してください。 257が1バイトオーバーフローすることを知って欲しい。 – Volker
@Volkerはい、私は257がバイトをオーバーフローすることを知っています。ケース1,2 okは私を混乱させます – binbin
コードのコメントは混乱しています。 4つはすべてオーバーフローですが、最後の2つはコンパイル時に検出されました(@Volkerが指すように、言語仕様を参照)。最初の2つ( 'rv1'と' rv2')も(実行時に)オーバーフローしますので、* ok *ではありません。 – putu