プログラミング言語 golang go syntax Go言語データの型変換

Go言語データの型変換

 
 
必要かつ実行可能な場合、あるタイプの値を別のタイプの値に変換できます。 Go 言語には暗黙的な型変換がないため、すべての型変換を明示的に宣言する必要があります。

 

valueOfTypeB = typeB(valueOfTypeA)

タイプBの値 = タイプB(タイプAの値)

例:

a := 5.0
b := int(a)

型変換は、値の範囲が小さい型から値の範囲が大きい型への変換 (int16 から int32 への変換) など、適切に定義されている場合にのみ成功します。値の範囲が大きい型から値の範囲が小さい型 (int32 から int16、または float32 から int) に変換すると、精度の損失 (切り捨て) が発生します。

相互に変換できるのは同じ基底型の変数のみです (int16 型を int32 型に変換するなど)。異なる基底型の変数を相互に変換するとコンパイル エラーが発生します (bool 型を int 型に変換するなど)。タイプ):

 package main

import (
     "fmt"
     "math"
)

func main() {

     //各値の範囲を出力します
     fmt.Println("int8 range:", math.MinInt8、math.MaxInt8)
     fmt.Println("int16 range:", math.MinInt16、math.MaxInt16)
     fmt.Println("int32 range:", math.MinInt32、math.MaxInt32)
     fmt.Println("int64 range:", math.MinInt64、math.MaxInt64)

     //32ビット整数値を初期化します
     var a int32 = 1047483647
     //変数の16進形式と10進値を出力します
     fmt.Printf("int32: 0x%x %d\n", a、a)

     // a変数の値を16進数に変換して、値が切り捨てられる
     b:= int16(a)
     //変数の16進形式と10進値を出力します
     fmt.Printf("int16: 0x%x %d\n", b、b)

     //定数をfloat32型として保存します
     var c float32 = math.Pi
     // int型に変換し、浮動小数点が失われます
     fmt.Println(int(c))
} 

コードの説明は次のとおりです。

  • 行 11 ~ 14 は、いくつかの一般的な整数型の値の範囲を出力します。
  • 17 行目で、int32 型の変数 a が宣言され、初期化されます。
  • 19 行目では、fmt.Printf の%x動詞を使用して値を 16 進形式で出力し、変換前の a の 32 ビット値を出力します。
  • 22行目では、aの値をint16型、つまり32ビット符号付き整数から16ビット符号付き整数に変換していますが、int16型はint32型に比べて値の範囲が狭いため、値はDoとなります。切り捨て(精度の損失)。
  • 24 行目では、変数の変換された値、つまり b の値を出力します。これも 16 進数と 10 進数で出力されます。
  • 27 行目では、 math.Pi は math パッケージの定数です。デフォルトでは型がなく、参照される実際の型に従って自動的に推定されます。ここでは、 math.Pi は変数 c に割り当てられているため、型はfloat32です。
  • 29行目、float32をint型に変換して出力します。

コード出力は次のとおりです。

int8 range: -128 127
int16 range: -32768 32767
int32 range: -2147483648 2147483647
int64 range: -9223372036854775808 9223372036854775807
int32: 0x3e6f54ff 1047483647
int16: 0x54ff 21759
3

出力結果によると、16ビット符号付き整数の範囲は-32768~32767ですが、変数aの値1047483647はこの範囲にありません。 1047483647 に対応する 16 進数値は 0x3e6f54ff ですが、int16 型に変換すると長さが半分に短縮され、つまり 16 進数値が半分になって 0x54ff となり、10 進数値は 21759 となります。

浮動小数点数を整数に変換すると、小数部分が削除され、整数部分のみが保持されます。

 

「 Go言語データの型変換」についてわかりやすく解説!絶対に観るべきベスト2動画

【Go言語 超入門コース】06.変数 |変数は、例えるなら「箱」のこと。箱にデータを入れておくことができます【プログラミング初心者向け入門講座】
【たった1時間で学べる】Go言語のプログラミング初心者向けの超入門講座【文字書き起こし、ソースコードも完全無料!】