一篇文章帶你了解Go語言基礎(chǔ)之?dāng)?shù)據(jù)類型
回復(fù)“Go語言”即可獲贈Python從入門到進階共10本電子書
上篇文章中我們學(xué)習(xí)了Go語言基礎(chǔ)中的變量,一篇文章帶你了解Go語言基礎(chǔ)之變量,這篇文章我們繼續(xù)介紹Go語言基礎(chǔ)知識,今天跟大家分享的是基礎(chǔ)數(shù)據(jù)類型,一起來學(xué)習(xí)下吧~
前言
Hey,大家好呀,我是星期八,這次咱們繼續(xù)學(xué)習(xí)Go基礎(chǔ)之?dāng)?shù)據(jù)類型叭。
iota
iota是Go中的一個常量計數(shù)器,只能在跟常量(const)一塊使用。
我們先來理解這一段話。
iota在const關(guān)鍵字出現(xiàn)時將被重置為0
const中每新增一行常量,iota將計數(shù)(+1)一次
示例1:
package mainimport "fmt"func main() {const (n1 = iota //在const關(guān)鍵字出現(xiàn)時將被重置為0n2 //沒寫相當(dāng)于寫了個n2=iota,每新增一行常量iota計數(shù)(+1)一次,n2 = 1n3 //同上 n3 = 2n4 // 同上 n4 = 3)fmt.Println(n1, n2, n3, n4)}
示例2:
遇到_會是什么情況。
package mainimport "fmt"func main() {const (n1 = iota //在const關(guān)鍵字出現(xiàn)時將被重置為0n2 // n2=1_ //匿名變量,相當(dāng)于寫了個 _=iota,所以此時iota=2n4 //n4=3)fmt.Println(n1, n2, n4)}
示例3:
一行多個iota。
package mainimport "fmt"func main() {const (a, b = iota + 1, iota + 2 //在const關(guān)鍵字出現(xiàn)時,iota=0,并且兩次賦值在同一行,iota沒有做+1c, d //同理,新增一行常量,常量個數(shù)為倆,仍然是一行,所以iota=1//c, d = iota + 1, iota + 2 同上,此時iota=1,c=2,d=3e, f // 同理,同上,e=3,f=4)fmt.Println(a, b, c, d, e, f)}
整型
整數(shù),很簡單了,就是像1,2,3,7,11,..這樣的整型數(shù)字了。
但是在Go中,整數(shù)分為兩大類,正整數(shù)和沒有符號的整數(shù)。
u開頭的不能存負(fù)數(shù)
| 類型 | 描述 |
|---|---|
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位操作系統(tǒng)上就是uint32,64位操作系統(tǒng)上就是uint64 |
int | 32位操作系統(tǒng)上就是int32,64位操作系統(tǒng)上就是int64 |
uintptr | 無符號整型,用于存放一個指針 |
示例:
package mainimport "fmt"func main() {var a = 10 //定義一個十進制數(shù)fmt.Printf("%T\n", a) //功能:打印變量類型,結(jié)果:默認(rèn)為int類型,也叫int64fmt.Printf("%d \n", a) //功能:十進制輸出,結(jié)果:10fmt.Printf("%b \n", a) //功能:二進制輸出,結(jié)果:1010fmt.Printf("%o \n", a) //功能:二進制輸出,結(jié)果:12var b = 0b1010011010 //定義一個二進制數(shù)1010011010,以0b開頭fmt.Printf("%d\n", b) //結(jié)果:666var c = 077 //定義一個八進制數(shù)77fmt.Printf("%d\n", c) //結(jié)果:63var d = 0x42 //定義一個十六進制42fmt.Printf("%d\n", d) //結(jié)果:66}
浮點型
在Go中,只有float32和float64,默認(rèn)使用的是float64。
示例:
package mainimport "fmt"func main() {var a = 1.21 //默認(rèn)為float64fmt.Printf("%T\n", a) //結(jié)果:float64fmt.Printf("%f\n",a)//功能:輸出浮點型數(shù),結(jié)果:1.210000fmt.Printf("%.1f\n",a)//功能:輸出浮點型數(shù),保留小數(shù)點一位,其他忽略,結(jié)果:1.2fmt.Printf("%.2f\n",a)//功能:輸出浮點型數(shù),保留小數(shù)點二位,其他忽略,結(jié)果:1.21}
布爾值
在Go中,bool類型就倆值,true和false。
無示例。
注:
bool類型默認(rèn)值為false。true != 1,在Go中,bool類型和整型不能混用。
字符串
終于到字符串了,在Go中,字符串是基本數(shù)據(jù)類型,在棧中存儲。
字符串的值為雙引號("")中的內(nèi)容。
示例:
package mainimport "fmt"func main() {var name = "hello"var name2 = "張三"fmt.Println(name,name2)}
在Go中,字符串內(nèi)存布局如下。

其實在Go中,字符串的本質(zhì)就是一個個的字符拼接成的。
多行字符串
有時候我們可能需要一個長篇大論,需要很長的字符串,這時候我們需要用到`號。
package mainimport "fmt"func main() {var lyric = `昨夜同門云集bai 推杯又換盞今朝du茶涼酒寒 豪言成笑談半生累 盡徒然zhi 碑文完美有誰看dao隱居山水之間 誓與浮名散湖畔青石板上 一把油紙傘`fmt.Println(lyric)}
字符串常用操作
| 方法 | 介紹 |
|---|---|
len(str) | 求長度 |
+或fmt.Sprintf | 拼接字符串 |
strings.Split | 分割 |
strings.contains | 判斷是否包含 |
strings.HasPrefix,strings.HasSuffix | 前綴/后綴判斷 |
strings.Index(),strings.LastIndex() | 子串出現(xiàn)的位置 |
strings.Join(a[]string, sep string) | join操作 |
示例代碼
package mainfunc main() {//len() 求字符串字節(jié)長度//var name = "你好,世界"//fmt.Println(len(name)) //因為中文是utf8,一個文字三個字節(jié),再加一個,號,所以是13//fmt.Sprintf 或 + 拼接字符串//name1 := "張"//name2 := "三"//name :=name1 + name2 //拼接字符串//fmt.Println(name)//name := fmt.Sprintf("%s%s", name1, name2)//同上,不過這種更靈活,推薦//name := fmt.Sprintf("我的姓名是:%s%s", name1, name2)//自定義拼接//fmt.Println(name)//strings.Split 分割字符串//name := "張三|18|男|法外狂徒"//info := strings.Split(name, "|")//fmt.Println(info) //返回的是切片,[張三 18 男 法外狂徒]//strings.contains 是否包含//name := "張三666"//result := strings.Contains(name, "6")//fmt.Println(result) //返回的是bool類型,true//strings.HasPrefix 判斷前綴(是不是以什么開頭)//name := "web/student/xxx.html"//result := strings.HasPrefix(name, "web")//fmt.Println(result) //true//strings.HasSuffix 判斷后綴(是不是以什么結(jié)尾)//name := "web/student/xxx.html"//result := strings.HasSuffix(name, "html")//fmt.Println(result)//true//strings.Index() 返回第一個字符串出現(xiàn)的位置//name := "hello world"//index := strings.Index(name, "o")//fmt.Println(index) //4//strings.LastIndex() // 正向數(shù),返回最后一個字符串出現(xiàn)的位置//name := "hello world"//index := strings.LastIndex(name, "o")//fmt.Println(index) // 7//strings.Join(a[]string, sep string) 字符串拼接//info_list := []string{"張三", "男", "18"} //定義一個列表//name := strings.Join(info_list, "|")//fmt.Println(name) //張三|男|18}
總結(jié)
上述我們學(xué)習(xí)了Go基礎(chǔ)之?dāng)?shù)據(jù)類型。如果在操作過程中有任務(wù)問題,記得下面討論區(qū)留言,我們看到會第一時間解決問題。
我是碼農(nóng)星期八,如果覺得還不錯,記得動手點贊一下哈,感謝你的觀看。
-------------------?End?-------------------

歡迎大家點贊,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持
想加入學(xué)習(xí)群請在后臺回復(fù)【入群】
萬水千山總是情,點個【在看】行不行
