Terdapat tiga jenis jenis berangka dalam Go: 1. Jenis integer, yang boleh dibahagikan kepada jenis integer bebas platform dan jenis integer berkaitan platform Perbezaannya ialah sama ada panjangnya konsisten di bawah seni bina CPU yang berbeza atau sistem pengendalian. 2. Jenis titik terapung boleh dibahagikan kepada float32 dan float64, yang sepadan dengan jenis berangka titik terapung ketepatan tunggal dan dua ketepatan dalam IEEE754 masing-masing. 3. Nombor kompleks boleh dibahagikan kepada dua jenis: kompleks128 (nombor nyata dan khayalan 64-bit) dan kompleks64 (nombor nyata dan khayalan 32-bit ialah nombor kompleks128 lalai).
Persekitaran pengendalian tutorial ini: sistem Windows 7, GO versi 1.18, komputer Dell G3.
Jenis data asas dalam sistem bahasa Go umumnya termasuk jenis berangka dan jenis rentetan.
Dan nombor jenis nilai boleh dibahagikan kepada jenis berikut: integer, nombor titik terapung, nombor kompleks , setiap satunya mengandungi jenis berangka dengan saiz yang berbeza, contohnya, integer bertanda termasuk int8 , int16, int32, int64, dsb. Setiap jenis berangka menentukan julat saiz yang sepadan dan sama ada ia menyokong tanda positif dan negatif.
Jenis integer bahasa Go (jenis integer)
Dalam bahasa Go, integer dibahagikan kepada integer bebas platform dan integer berkaitan platform. Perbezaan utama terletak pada sama ada panjang jenis integer ini konsisten di bawah seni bina CPU atau sistem pengendalian yang berbeza.
Integer bebas platform
Integer bebas membezakan antara integer yang ditandatangani dan integer yang tidak ditandatangani, dan julat data yang diwakilinya adalah berbeza.
Jenis integer berkaitan platform
Go secara asli menyediakan tiga jenis integer berkaitan platform, iaitu int, uint dan uintptr.
Nota khas: Apabila menulis kod dengan keperluan mudah alih, jangan sekali-kali bergantung sepenuhnya pada panjang jenis ini.
Anda boleh menggunakan fungsi SizeOf yang disediakan oleh pakej tidak selamat untuk mendapatkan panjang tiga integer pada platform.
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 menyediakan pakej fmt perpustakaan standard untuk memformat dan mengeluarkan pangkalan yang berbeza.
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 }
Jenis titik terapung bahasa Go (jenis perpuluhan)
Bahasa Go menyediakan float32 dan float64 Terdapat dua jenis titik terapung, yang masing-masing sepadan dengan jenis berangka titik terapung ketepatan tunggal dan dua ketepatan dalam IEEE754, yang pada asasnya sepadan dengan jenis apungan dan berganda di Jawa.
Bahasa Go menyediakan dua cara untuk mewakili jenis titik terapung, jenis perpuluhan dan tatatanda saintifik dibahagikan kepada dua kaedah perwakilan: perpuluhan dan perenambelasan.
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 menyediakan dua jenis nombor kompleks, ia adalah kompleks64 dan kompleks128 Bahagian nyata dan khayalan kompleks64 adalah kedua-dua jenis float32, manakala bahagian nyata dan khayalan kompleks128 kedua-duanya jenis float64. Jika nombor kompleks tidak ditaip secara eksplisit, jenis lalainya ialah kompleks128.
Go menyediakan tiga kaedah perwakilan:
1 Mulakan terus pembolehubah jenis kompleks menggunakan nilai literal kompleks
var c = 5 + 7i var d = 0o123 + .12345E+5i // 83+12345i
2 fungsi kompleks yang disediakan oleh Go mencipta nilai jenis complex128
var c = complex(5, 6) // 5 + 6i var d = complex(0o123, .12345E+5) // 83+12345i
3. Menggunakan fungsi nyata dan imej pratakrif yang disediakan oleh Go, anda boleh mendapatkan bahagian sebenar dan bahagian khayalan nombor kompleks, dan nilai pulangan ialah jenis Titik apungan
var c = complex(5, 6) // 5 + 6i r := real(c) // 5.000000 i := imag(c) // 6.000000
Pengetahuan lanjutan: Jenis berangka tersuai
boleh disediakan mengikut jenis kunci dalam bahasa Go Mengisytiharkan jenis baharu berdasarkan jenis angka primitif.
Contohnya,
type NewInt int32
NewInt ialah jenis asas kami ialah int32, tetapi ia adalah dua jenis yang berbeza daripada jenis asli int32. Ia tidak boleh ditetapkan secara langsung dan diperlukan untuk dipaparkan dan ditukar Hanya kemudian.
type NewInt int32 var m int = 5 var n int32 = 6 var a NewInt = NewInt(m) // ok var b NewInt = NewInt(n) // ok
Sudah tentu, jika anda ingin dapat menetapkan dan menggunakan jenis asli secara langsung, Go menyediakan sintaks alias jenis (Jenis Alias) untuk menyesuaikan jenis angka.
type NewInt = int32 var m int32 = 5 var n NewInt = m
Jenis angka asli Go mempunyai tiga jenis: integer, titik terapung dan nombor kompleks Jenis , melalui pengenalan ringkas di atas, kita dapat mengetahui bahawa Go pada dasarnya berbeza daripada kebanyakan bahasa arus perdana Sudah tentu, Go juga berbeza, seperti sokongan aslinya untuk jenis jamak.
[Cadangan berkaitan: Pergi tutorial video, Pengajaran pengaturcaraan]
Atas ialah kandungan terperinci Berapa banyak jenis berangka yang terdapat dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!