1. 程式人生 > 其它 >GO語言學習——基本資料型別——整型、浮點型、複數、布林值、fmt佔位符

GO語言學習——基本資料型別——整型、浮點型、複數、布林值、fmt佔位符

基本資料型別

整型

整型分為以下兩個大類: 按長度分為:int8、int16、int32、int64 對應的無符號整型:uint8、uint16、uint32、uint64

其中,uint8就是我們熟知的byte型,int16對應C語言中的short型,int64對應C語言中的long型。

型別  	                   描述                   

uint8 無符號 8位整型 (0 到 255)
uint16 無符號 16位整型 (0 到 65535)
uint32 無符號 32位整型 (0 到 4294967295)
uint64 無符號 64位整型 (0 到 18446744073709551615)
int8 有符號 8位整型 (-128 到 127)
int16 有符號 16位整型 (-32768 到 32767)
int32 有符號 32位整型 (-2147483648 到 2147483647)
int64 有符號 64位整型 (-9223372036854775808 到 9223372036854775807)

特殊整型

型別   	               描述                

uint 32位作業系統上就是uint32,64位作業系統上就是uint64
int 32位作業系統上就是int32,64位作業系統上就是int64
uintptr 無符號整型,用於存放一個指標

注意: 在使用int和 uint型別時,不能假定它是32位或64位的整型,而是考慮int和uint可能在不同平臺上的差異。

注意事項 獲取物件的長度的內建len()函式返回的長度可以根據不同平臺的位元組長度進行變化。實際使用中,切片或 map 的元素數量等都可以用int來表示。在涉及到二進位制傳輸、讀寫檔案的結構描述時,為了保持檔案的結構不會受到不同編譯目標平臺位元組長度的影響,不要使用int和 uint。

package main

import "fmt"

// 整型

func main()  {
	var i1 = 101
	fmt.Printf("%d\n", i1)
	fmt.Printf("%b\n", i1) // 把十進位制轉換成二進位制
	fmt.Printf("%o\n", i1) // 把十進位制轉換成八進位制
	fmt.Printf("%x\n", i1) // 把十進位制轉換成十六進x
	// 八進位制
	i2 := 077
	fmt.Printf("%d\n", i2)
	// 十六進位制
	i3 := 0x1234567
	fmt.Printf("%d\n", i3)
	// 檢視變數的型別
	fmt.Printf("%T\n", i3)
	// 宣告int8型別的變數
	i4 := int8(9)  // 明確指定int8型別,否則預設int型別
	fmt.Printf("%T\n", i4)
}

浮點型

Go語言支援兩種浮點型數:float32和float64。這兩種浮點型資料格式遵循IEEE 754標準: float32 的浮點數的最大範圍約為 3.4e38,可以使用常量定義:math.MaxFloat32。 float64 的浮點數的最大範圍約為 1.8e308,可以使用一個常量定義:math.MaxFloat64。

package main

import "fmt"


// 浮點數
func main(){
	// math.MaxFloat32 // float32最大值
	f1 := 1.23456
	fmt.Printf("%T\n", f1) // 預設Go語言中的小數都是float64型別
}


E:\go\src\github.com\qiaopengjun\day01\05float>go build

E:\go\src\github.com\qiaopengjun\day01\05float>05float.exe
float64


package main

import "fmt"

// 浮點數
func main(){
	// math.MaxFloat32 // float32最大值
	f1 := 1.23456
	fmt.Printf("%T\n", f1) // 預設Go語言中的小數都是float64型別
	f2 := float32(1.23456) 
	fmt.Printf("%T\n", f2) // 顯示宣告float32型別
	// f1 = f2 // float32型別的值不能直接賦值給float64型別的變數
}

複數

complex64和complex128

var c1 complex64
c1 = 1 + 2i
var c2 complex128
c2 = 2 + 3i
fmt.Println(c1)
fmt.Println(c2)

複數有實部和虛部,complex64的實部和虛部為32位,complex128的實部和虛部為64位。

布林值

Go語言中以bool型別進行宣告布林型資料,布林型資料只有true(真)和false(假)兩個值。

注意:

  1. 布林型別變數的預設值為false。

  2. Go 語言中不允許將整型強制轉換為布林型.

  3. 布林型無法參與數值運算,也無法與其他型別進行轉換。

    package main

    import "fmt"

    // 布林型別

    func main(){
    b1 := true
    var b2 bool // 預設是false
    fmt.Printf("%T value:%v\n", b1, b1)
    fmt.Printf("%T value:%v\n", b2, b2)
    }

    E:\go\src\github.com\qiaopengjun\day01\06bool>go build

    E:\go\src\github.com\qiaopengjun\day01\06bool>06bool.exe
    bool value:true
    bool value:false

fmt佔位符

package main

import "fmt"

// fmt佔位符
func main(){
	var n = 100
	// 檢視型別
	fmt.Printf("%T\n", n)
	fmt.Printf("%v\n", n)
	fmt.Printf("%b\n", n)
	fmt.Printf("%d\n", n)
	fmt.Printf("%o\n", n)
	fmt.Printf("%x\n", n)
	var s = "Hello 沙河!"
	fmt.Printf("字串:%s\n", s)
	fmt.Printf("字串:%v\n", s)
	fmt.Printf("字串:%#v\n", s)

}


E:\go\src\github.com\qiaopengjun\day01\07fmt>go build

E:\go\src\github.com\qiaopengjun\day01\07fmt>07fmt.exe
int
100
1100100
100
144
64
Hello 沙河!
Hello 沙河!

E:\go\src\github.com\qiaopengjun\day01\07fmt>go build  

E:\go\src\github.com\qiaopengjun\day01\07fmt>07fmt.exe
int
100
1100100
100
144
64
字串:Hello 中國!
字串:Hello 中國!
字串:"Hello 中國!"

E:\go\src\github.com\qiaopengjun\day01\07fmt>