Go には 3 つのタイプの数値型があります: 1. 整数型, プラットフォームに依存しない整数とプラットフォーム関連の整数に分けることができます. 違いは、長さが異なる CPU アーキテクチャまたは動作下で一貫しているかどうかです。システム。 2. 浮動小数点型は float32 と float64 に分類でき、それぞれ IEEE754 の単精度および倍精度浮動小数点数値型に対応します。 3. 複素数は、complex128 (64 ビットの実数および虚数) と complex64 (32 ビットの実数および虚数) の 2 つのタイプに分類できます。Complex128 は、複素数のデフォルトのタイプです。
このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。
Go 言語システムの基本データ型には、通常、数値型と文字列型が含まれます。
数値値の型は、整数、浮動小数点数、複素数の型に分類でき、それぞれに異なるサイズの数値型が含まれます。たとえば、符号付き整数には int8 が含まれます。 、int16、int32、int64 など。各数値型は、対応するサイズ範囲と、正負の符号をサポートするかどうかを決定します。
Go 言語の整数型 (整数型)
Go 言語では、整数はプラットフォームに依存しない整数とプラットフォームに関連する整数に分類されます。主な違いは、これらの整数型の長さが異なる CPU アーキテクチャまたはオペレーティング システムでも一貫しているかどうかにあります。
プラットフォームに依存しない整数型
独立した整数型は、符号付き整数型と符号なし整数型を区別し、それらが表すデータ範囲が異なります。
プラットフォーム関連の整数型
Go は、プラットフォーム関連の 3 つの整数型 (int、uint、および uintptr) をネイティブで提供します。
特記事項: 移植性要件を備えたコードを作成する場合は、これらの型の長さにあまり依存しないでください。
unsafe パッケージが提供する SizeOf 関数を使用して、プラットフォーム上の 3 つの整数の長さを取得できます。
func main() { var a, b = int(5), uint(6) var p uintptr = 0x12345678 fmt.Println("signed integer a's length is", unsafe.Sizeof(a)) fmt.Println("unsigned integer b's length is", unsafe.Sizeof(b)) fmt.Println("uintptr's length is", unsafe.Sizeof(p)) } // 打印输出 signed integer a's length is 8 unsigned integer b's length is 8 uintptr's length is 8
go は、さまざまな基本フォーマットをフォーマットして出力するための標準ライブラリ fmt パッケージを提供します。
func main() { var a int8 = 66 fmt.Printf("%b\n", a) //输出二进制:1000010 fmt.Printf("%d\n", a) //输出十进制:66 fmt.Printf("%o\n", a) //输出八进制:102 fmt.Printf("%O\n", a) //输出八进制(带0o前缀):0o102 fmt.Printf("%x\n", a) //输出十六进制(小写):42 fmt.Printf("%X\n", a) //输出十六进制(大写):42 }
Go 言語には float32 と float64 があります。これらはそれぞれ IEEE754 の単精度および倍精度浮動小数点数値型に対応し、基本的には Java の float 型および double 型に対応します。
Go 言語では、浮動小数点型を表現する方法として 10 進数型と科学的表記法の 2 つの方法が用意されており、科学的表記法は 10 進数と 16 進数の 2 つの表現方法に分かれています。
3.1415 .15 // 整数部分如果为0,整数部分可以省略不写 81.80 82. // 小数部分如果为0,小数点后的0可以省略不写
十进制表示法: 6674.28e-2 // 6674.28 * 10^(-2) = 66.742800 .12345E+5 // 0.12345 * 10^5 = 12345.000000 十六进制表示法: 0x2.p10 // 2.0 * 2^10 = 2048.000000 0x1.Fp+0 // 1.9375 * 2^0 = 1.937500
var f float64 = 112.676899 // 浮点类型第一种:十进制表示法 fmt.Printf("%f\n", f) // 112.676899 // 浮点类型第二种:科学计数法--十进制表示法 fmt.Printf("%e\n", f) // 1.126769e+02 // 浮点类型第二种:科学计数法--十六进制表示法 fmt.Printf("%x\n", f) // 0x1.c2b52502eec7dp+06
Go Two 複素数complex64 の実数部と虚数部は両方とも float32 型であり、complex128 の実数部と虚数部は両方とも float64 型です。複素数が明示的に型指定されていない場合、そのデフォルトの型は complex128 です。
Go は 3 つの表現方法を提供します:
1. 複雑なリテラル値を使用して、複合型変数を直接初期化します
var c = 5 + 7i var d = 0o123 + .12345E+5i // 83+12345i
2. Go を使用して、 Complex 関数は、complex128 型の値
var c = complex(5, 6) // 5 + 6i var d = complex(0o123, .12345E+5) // 83+12345i
3 を作成します。Go が提供する定義済み関数 real および imagi を使用すると、複素数の実数部と虚数部を取得でき、戻り値は浮動小数点になります。 point type
var c = complex(5, 6) // 5 + 6i r := real(c) // 5.000000 i := imag(c) // 6.000000
は、型を通じてネイティブ数値型に基づいて生成できます。 Go 言語で提供されるキーワード 新しい型を宣言します。
たとえば、
type NewInt int32
NewInt は新しく定義された型です。基になる型は int32 ですが、ネイティブ型 int32 とは 2 つの異なる型です。直接割り当てることはできないため、代入する必要があります。表示され、変換されます。
type NewInt int32 var m int = 5 var n int32 = 6 var a NewInt = NewInt(m) // ok var b NewInt = NewInt(n) // ok
もちろん、ネイティブ型を直接割り当てて使用できるようにしたい場合は、Go は数値型をカスタマイズするための型エイリアス (Type Alias) 構文を提供します。
type NewInt = int32 var m int32 = 5 var n NewInt = m
Go には、整数、浮動小数点、複素数の 3 種類のネイティブ数値型があります。上記の簡単な紹介から、Go はほとんどの主流言語とは基本的に異なることがわかりますが、もちろん、複数の型をネイティブでサポートするなど、Go も異なります。
【関連する推奨事項: Go ビデオ チュートリアル 、プログラミング教育 】
以上がGo には数値型がいくつありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。