uint8 から int8 への変換に関する混乱
uint8 (符号なし 8 ビット整数) を int8 (符号付き 8 ビット整数) に変換する場合)、結果が必ずしも期待どおりになるとは限りません。この記事では、次の 2 つのアプローチの違いを調査し、最初のアプローチでコンパイル エラーが発生する理由を説明します。
コードの違い
次の違い2 つのコードは演算の順序に従っています:
最初のコードのコンパイル エラー
最初のコードでは、定数が次の理由でコンパイル エラーが発生します。 0xfc は int8 型の範囲を超えています。 int8 は -128 ~ 127 の値を表現できますが、0xfc は 10 進数で 252 であり、この範囲を超えています。 Go 言語の仕様によれば、定数式は定数型の値によって常に正確に表現できなければなりません。
正当な定数式と不正な定数式
https:// を参照してください。合法および違法な定数式の詳細な説明については、golang.org/ref/spec#Constant_expressions を参照してください。 https://blog.golang.org/constants のブログ投稿では、整数型の制限と、エラーを検出するための型チェック定数の重要性についての追加の洞察が提供されます。
変換の問題の解決
符号を考慮しながらバイト (uint8) を int32 に変換することが目標の場合、推奨されるアプローチは、まず int8 に変換してから int32 に変換することです。
以上がGo で定数を使用した uint8 から int8 への変換が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。