ホームページ >バックエンド開発 >Golang >Go には数値型がいくつありますか?

Go には数値型がいくつありますか?

青灯夜游
青灯夜游オリジナル
2023-01-09 11:08:111834ブラウズ

Go には 3 つのタイプの数値型があります: 1. 整数型, プラットフォームに依存しない整数とプラットフォーム関連の整数に分けることができます. 違いは、長さが異なる CPU アーキテクチャまたは動作下で一貫しているかどうかです。システム。 2. 浮動小数点型は float32 と float64 に分類でき、それぞれ IEEE754 の単精度および倍精度浮動小数点数値型に対応します。 3. 複素数は、complex128 (64 ビットの実数および虚数) と complex64 (32 ビットの実数および虚数) の 2 つのタイプに分類できます。Complex128 は、複素数のデフォルトのタイプです。

Go には数値型がいくつありますか?

このチュートリアルの動作環境: Windows 7 システム、GO バージョン 1.18、Dell G3 コンピューター。

Go 言語システムの基本データ型には、通常、数値型と文字列型が含まれます。

数値値の型は、整数、浮動小数点数、複素数の型に分類でき、それぞれに異なるサイズの数値型が含まれます。たとえば、符号付き整数には int8 が含まれます。 、int16、int32、int64 など。各数値型は、対応するサイズ範囲と、正負の符号をサポートするかどうかを決定します。

Go 言語の整数型 (整数型)

Go 言語では、整数はプラットフォームに依存しない整数とプラットフォームに関連する整数に分類されます。主な違いは、これらの整数型の長さが異なる CPU アーキテクチャまたはオペレーティング システムでも一貫しているかどうかにあります。

プラットフォームに依存しない整数型

独立した整数型は、符号付き整数型と符号なし整数型を区別し、それらが表すデータ範囲が異なります。

Go には数値型がいくつありますか?

プラットフォーム関連の整数型

Go は、プラットフォーム関連の 3 つの整数型 (int、uint、および uintptr) をネイティブで提供します。

Go には数値型がいくつありますか?

特記事項: 移植性要件を備えたコードを作成する場合は、これらの型の長さにあまり依存しないでください。

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 言語の浮動小数点型 (10 進数型)

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 言語の複数形

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。