型別 | 名稱 | 長度 | 零值 | 說明 |
---|---|---|---|---|
bool | 布林型別 | 1 | false | 其值不為真即為假,不可以用數字代表true或false |
byte | 位元組型 | 1 | 0 | uint8別名 |
int, uint | 整型 | 4或8 | 0 | 有符號32位或無符號64位 |
int8 | 整型 | 1 | 0 | -128 ~ 127, |
uint8 | 整型 | 1 | 0 | 0 ~ 255 |
int16 | 整型 | 2 | 0 | -32768 ~ 32767, |
uint16 | 整型 | 2 | 0 | 0 ~ 65535 |
int32 | 整型 | 4 | 0 | -2147483648 到 2147483647 |
uint32 | 整型 | 4 | 0 | 0 到 4294967295(42億) |
int64 | 整型 | 8 | 0 | -9223372036854775808到 92233720368547758070 |
uint64 | 整型 | 8 | 0 | 到 18446744073709551615(1844京) |
float32 | 浮點型 | 4 | 0.0 | 小數位精確到7位 |
float64 | 浮點型 | 8 | 0.0 | 小數位精確到15位 |
string | 字串 | "" | utf-8字串 |
下面我們看一下幾個非常重要的型別,其它型別隨著課程的深入,後面會給大家講解到
1:布林型別
在計算機中,我們用什麼資料型別來表示一句話的對錯,例如:在計算機中描述張三(20歲)比李四(18)小,這句話的結果?
布林型別的變數取值要麼是真(true),要麼是假(false),用bool關鍵字來進行定義。示例如下:
package main
// 09
import "fmt"
func main() {
//布林型別 值為true 或者為 false
//var a bool //預設值為false
////bool型別一般用於條件判斷
//a = true
//fmt.Println(a)
//自動推到型別建立bool型別變數
a := false //bool
//a=true
//fmt.Println(a)
//%T是一個佔位符 表示輸出一個變數對應的資料型別
fmt.Printf("%T\n", a)
b := 10 //int
fmt.Printf("%T\n", b)
c := 3.14 //float64
fmt.Printf("%T\n", c)
d := "你個錘子"//string
fmt.Printf("%T", d)
}
布林型別主要用於後面講解的條件判斷,關於條件判斷,我們在這裡先舉一個生活中的案例,大家可以理解一下:
2:浮點型
package main
import "fmt"
func main0101() {
//浮點型資料 分為 單精度浮點型 float32(小數位數為7位) 雙精度浮點型 float64(小數位數為15位)
//float64 比 float32 更精準
//var a float64=1223.456
////保留六位小數資料會更精準
//fmt.Printf("%f\n",a)
//var a float32 =3.14
//
//fmt.Printf("%.2f",a)
//通過自動推到型別建立的浮點型變數 預設型別為float64
a := 123.456
fmt.Printf("%T\n", a)
}
//買黃瓜 3.2一斤 買3斤
func main() {
price := 3.2
var weight float64
fmt.Scan(&weight)
sum := price * weight
//fmt.Println(sum)
fmt.Printf("%.2f",sum)
}
3:字元型別
package main
import "fmt"
func main0201() {
//byte字元型別 同時也是uint8的別名
var a byte = 'a'
//所有的字元都對應ASCII中的整型資料
//'0'對應的48 'A'對應的65 'a' 對應的97
//fmt.Println(a)
//%c是一個佔位符 表示列印輸出一個字元
fmt.Printf("%c\n", a)
fmt.Printf("%c\n", 97)
fmt.Printf("%T\n", a)
var b byte = '0' //字元0 對應的ASCII值為為48
fmt.Printf("%c\n", 48)
fmt.Printf("%c\n", b)
}
func main0202() {
var a byte = 'a'
//將小寫字母轉成大寫字母輸出
fmt.Printf("%c", a-32)
}
func main() {
//轉義字元 \n 換行
//var a byte = '\n'
//\0 對應的ASCII 值為0 用於字串的結束標誌
//\t 對應的ASCII 值為9 水平製表符 一次跳八個空格
var a byte ='\t'
//fmt.Println(a)
fmt.Printf("%c",a)
}
4:字串型別
package main
import "fmt"
func main0301() {
//var a string = "你好"
////fmt.Println(a)
//fmt.Printf("%s",a)
//a:="你好"
//fmt.Println(a)
//fmt.Printf("%s",a)
//雙引號引起來的稱為字串
ch := 'a'
str := "a" //'a''\0'字串結束標誌
fmt.Printf("%c\n", ch)
//%s列印字串列印到\0之前的內容
fmt.Printf("%s\n", str)
}
func main0302() {
// 字元與字串區別
//len 函式 用來計算字串中字元個數 不包含\0 返回值為int型別
//a := "hello"
//在go語言中一個漢字佔3個字元 為了和linux進行統一處理
a := "bokedu"
var count int
count = len(a)
fmt.Println(count)
}
func main() {
str1 := "澳門線上賭場上線了"
str2 := "性感荷官線上發牌"
//字串連線 +
str3 := str1 + str2
fmt.Println(str3)
}
5:字元與字串區別
上面的程式碼中已經實現
6:fmt包的格式化輸出輸入
我們前面在輸出與輸入字串型別,字元型別,整型等都指定了對應的格式化,那麼go語言中還有哪些格式化呢?
格式 | 含義 |
---|---|
%% | 一個%字面量 |
%b | 一個二進位制整數值(基數為2),或者是一個(高階的)用科學計數法表示的指數為2的浮點數 |
%c | 字元型。可以把輸入的數字按照ASCII碼相應轉換為對應的字元 |
%d | 一個十進位制數值(基數為10) |
%e | 以科學記數法e表示的浮點數或者複數值 |
%E | 以科學記數法E表示的浮點數或者複數值 |
%f | 以標準記數法表示的浮點數或者複數值 |
%g | 以%e或者%f表示的浮點數或者複數,任何一個都以最為緊湊的方式輸出 |
%G | 以%E或者%f表示的浮點數或者複數,任何一個都以最為緊湊的方式輸出 |
%o | 一個以八進位制表示的數字(基數為8) |
%p | 以十六進位制(基數為16)表示的一個值的地址,字首為0x,字母使用小寫的a-f表示 |
%q | 使用Go語法以及必須時使用轉義,以雙引號括起來的字串或者位元組切片[]byte,或者是以單引號括起來的數字 |
%s | 字串。輸出字串中的字元直至字串中的空字元(字串以'\0‘結尾,這個'\0'即空字元) |
%t | 以true或者false輸出的布林值 |
%T | 使用Go語法輸出的值的型別 |
%U | 一個用Unicode表示法表示的整型碼點,預設值為4個數字字元 |
%v | 使用預設格式輸出的內建或者自定義型別的值,或者是使用其型別的String()方式輸出的自定義值,如果該方法存在的話 |
%x | 以十六進位制表示的整型值(基數為十六),數字a-f使用小寫表示 |
%X | 以十六進位制表示的整型值(基數為十六),數字A-F使用小寫表示 |
%% | 一個%字面量 |
%b | 一個二進位制整數值(基數為2),或者是一個(高階的)用科學計數法表示的指數為2的浮點數 |
%c | 字元型。可以把輸入的數字按照ASCII碼相應轉換為對應的字元 |
%d | 一個十進位制數值(基數為10) |
%e | 以科學記數法e表示的浮點數或者複數值 |
%E | 以科學記數法E表示的浮點數或者複數值 |
%f | 以標準記數法表示的浮點數或者複數值 |
%g | 以%e或者%f表示的浮點數或者複數,任何一個都以最為緊湊的方式輸出 |
%G | 以%E或者%f表示的浮點數或者複數,任何一個都以最為緊湊的方式輸出 |
%o | 一個以八進位制表示的數字(基數為8) |
%p | 以十六進位制(基數為16)表示的一個值的地址,字首為0x,字母使用小寫的a-f表示 |
%q | 使用Go語法以及必須時使用轉義,以雙引號括起來的字串或者位元組切片[]byte,或者是以單引號括起來的數字 |
%s | 字串。輸出字串中的字元直至字串中的空字元(字串以'\0‘結尾,這個'\0'即空字元) |
%t | 以true或者false輸出的布林值 |
%T | 使用Go語法輸出的值的型別 |
%U | 一個用Unicode表示法表示的整型碼點,預設值為4個數字字元 |
%v | 使用預設格式輸出的內建或者自定義型別的值,或者是使用其型別的String()方式輸出的自定義值,如果該方法存在的話 |
%x | 以十六進位制表示的整型值(基數為十六),數字a-f使用小寫表示 |
%X | 以十六進位制表示的整型值(基數為十六),數字A-F使用小寫表示 |
package main
import "fmt"
func main0401() {
//fmt.Printf("35%%")
//十進位制整型資料
a := 123
//%b 佔位符 列印一個資料的二進位制格式
fmt.Printf("%b\n", a)
//%o 佔位符 列印一個資料的二進位制格式
fmt.Printf("%o\n", a)
//%x %X 佔位符 十六進位制
//10-15用a-f表示 %x a-f %X A-F
fmt.Printf("%x\n", a)
fmt.Printf("%X\n", a)
//十進位制
fmt.Println(a)
fmt.Printf("%d\n", a)
}
func main0402() {
//十進位制資料
var a int = 10
//八進位制資料 八進位制資料是以0開頭 最大值為7
var b int = 010
//十六進位制資料 十六進位制資料是以0x開頭
//10-15用a-f表示 %x a-f %X A-F
var c int = 0xABC
//二進位制 不能在go語言中直接表示
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
}
func main() {
//''引起來的智慧儲存一個字元
ch := 'a' //'\n'
str := "瓜娃子"
fmt.Printf("%c\n", ch)
fmt.Printf("%s\n", str)
fmt.Println(ch)
//%p 佔位符 列印是一個變數對應的記憶體地址 是以無符號十六進位制整型表示
fmt.Printf("%p\n", &ch)
fmt.Printf("%p\n", &str)
a := false
//%t佔位符 列印bool型別的值
fmt.Printf("%t\n",a)
fmt.Println(a)
}