您好,登錄后才能下訂單哦!
這篇文章主要介紹了Go語言中的基礎(chǔ)數(shù)據(jù)類型如何使用的相關(guān)知識,內(nèi)容詳細(xì)易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Go語言中的基礎(chǔ)數(shù)據(jù)類型如何使用文章都會有所收獲,下面我們一起來看看吧。
在Go
中整型數(shù)據(jù)類型主要分為
有符號整型
無符號整型
特殊整型
int8
: 8位(-128 ~ 127)
int16
: 16位(-32768 ~ 32767)
int32
: 32位(-2147483648 ~ 214748347)
int64
: 64位(-9223372036854775808 ~ 9223372036854775807)
var a int8 var b int16 var c int32 var d int64
uint8
: 8位(0 ~ 255)
uint16
: 16位(0 ~ 65535)
uint32
: 32位(0 ~ 4294967295)
uint64
: 64位(0 ~ 18446744073709551615)
var a uint8 var b uint16 var c uint32 var d uint64
uint
: 在32位操作系統(tǒng)上就是unit32
,64位操作系統(tǒng)上就是uint64
int
: 在32位操作系統(tǒng)上就是int32
,64位操作系統(tǒng)上就是int64
unitptr
: 無符號整型,用于存放一個指針
var a unit var b int var c unitptr
在Go
中也可以使用數(shù)字字面量語法
0b
開頭的代表二進制
0o
開頭的代表八進制
0x
開頭的代表十六進制
在Go
中支持的浮點型有兩種
float32
float64
var a float32 = 3.14 var b float64 = 3.1415
在Go
中支持的復(fù)數(shù)有兩種
complex64
complex128
var a complex64 a = 1 + 2i var b complex128 b = 2 + 3i
復(fù)數(shù)擁有實部和虛部,complex64
的實部和虛部為32位,而complex128
的實部和虛部為64位
在Go
中布爾值通過bool
進行類型聲明,布爾值的數(shù)據(jù)只能時true
和false
,并且布爾類型變量的默認(rèn)值為false
,Go
中不允許將整型強制轉(zhuǎn)換為布爾型,而且布爾型無法參加數(shù)值運算,也無法與其他類型進行轉(zhuǎn)換
var a bool = true var b bool = false
在Go
中字符串是以雙引號包裹的內(nèi)容
var a string = "water" var b string = "你好"
\r
:回車符
\n
:換行符
\t
:制表符
\'
:單引號
\"
:雙引號
\\
:反斜杠
在Go
中要定義一個多行字符串時,需要使用反引號包裹
var a string = `這是 什么 `
反引號間換行將被作為字符串中的換行,但是所有的轉(zhuǎn)義字符均無效,文本將會原樣輸出
name := "water" zhName := "中國" join := []string{"water", "iio"}
len(string)
獲取字符長度
// len fmt.Println(len(name)) => 5 fmt.Println(len(zhName)) => 6 // 一個漢字占用3個字符所以是字符的長度
utf8.RuneCountInString
獲取字符串長度
// utf8.RuneCountInString fmt.Println(utf8.RuneCountInString(name)) => 5 fmt.Println(utf8.RuneCountInString(zhName)) => 2
+/fmt.Sprintf
連接字符串
// +/fmt.Sprintf fmt.Println(zhName + name) => "中國water" fmt.Println(fmt.Sprintf("我是%s的%s", zhName, name)) => "我是中國的water"
strings.Split
分割字符串
fmt.Println(strings.Split(name, "")) => [w a t e r]
strings.Contains
判斷是否包含子字符串
fmt.Println(strings.Contains(name, "w")) => true
strings.HasPrefix
判斷是否以子字符串開頭
fmt.Println(strings.HasPrefix(name, "w")) => true
strings.HasSuffix
判斷是否以子字符串結(jié)尾
fmt.Println(strings.HasSuffix(name, "r")) => true
strings.Index()
判斷子字符串或字符在父字符串中出現(xiàn)的位置(索引)
fmt.Println(strings.Index(name, "r")) => 4
strings.LastIndex()
返回子字符串在字符串中最后出現(xiàn)位置的索引( 子字符串的第一個字符的索引)
fmt.Println(strings.LastIndex("waterte", "te")) => 5
strings.Join(a[]string,sep string)
把切片連接成字符串
fmt.Println(strings.Join(join, ",")) => "water,iio"
在Go
中組成字符串的叫做字符,每個字符串都有字符組成,一般可以通過遍歷或者單個獲取字符串元素獲得字符。字符用單引號包裹
var a = '我' var b = 't'
在Go
中字符有兩種
uint8
類型也叫byte
型,代表一個ASCII
碼字符
rune
類型,代表一個UTF-8
字符
當(dāng)需要處理中文、日文或者其他復(fù)合字符時,則需要用到rune
類型。rune
類型實際是一個int32
Go
使用了特殊的 rune
類型來處理 Unicode
,讓基于 Unicode
的文本處理更為方便,也可以使用 byte
型進行默認(rèn)字符串處理,性能和擴展性都有照顧。
因為UTF8
編碼下一個中文漢字由3~4
個字節(jié)組成,所以我們不能簡單的按照字節(jié)去遍歷一個包含中文的字符串,否則就會出現(xiàn)上面輸出中第一行的結(jié)果。
字符串底層是一個byte
數(shù)組,所以可以和[]byte
類型相互轉(zhuǎn)換。字符串是不能修改的 字符串是由byte
字節(jié)組成,所以字符串的長度是byte
字節(jié)的長度。 rune
類型用來表示utf8
字符,一個rune
字符由一個或多個byte
組成。
要修改字符串,需要先將其轉(zhuǎn)換成[]rune
或[]byte
,完成后再轉(zhuǎn)換為string
。無論哪種轉(zhuǎn)換,都會重新分配內(nèi)存,并復(fù)制字節(jié)數(shù)組。
func setString() { name := "water" // 強制類型轉(zhuǎn)換 byteName := []byte(name) byteName[0] = 'm' fmt.Println(string(byteName)) zhName := "大熊貓" runeZhName := []rune(zhName) runeZhName[0] = '小' fmt.Println(string(runeZhName)) } => mater 小熊貓
Go
語言中只有強制類型轉(zhuǎn)換,沒有隱式類型轉(zhuǎn)換。該語法只能在兩個類型之間支持相互轉(zhuǎn)換的時候使用。
強制類型轉(zhuǎn)換的基本語法如下:
T(表達(dá)式) fmt.Println(string(runeZhName))
關(guān)于“Go語言中的基礎(chǔ)數(shù)據(jù)類型如何使用”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對“Go語言中的基礎(chǔ)數(shù)據(jù)類型如何使用”知識都有一定的了解,大家如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。