Go 基本型別

2022-01-10 09:09:22 字數 4541 閱讀 6783

標準整形是按長度進行分類的,其中uint8byte型,int16c語言中的short型,int64c語言中的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

int32位作業系統上就是int32,64位作業系統上就是int64

uintptr

無符號整型,用於存放乙個指標

動態整形的意思即是再不同的平台上,有不同的差異。

注意事項len()函式可以根據不同平台動態獲取動態整形的長度。但是在涉及到二進位制傳輸、讀寫檔案的結構描述時,不要使用intuint

go1.13版本後,可以根據字面量來書寫不同的進製。

你甚至可以使用_來做分割,如v:=123_456表示v的值為123456

需要注意的一點是,go語言中目前不支援二進位制的字面量寫法。

借助fmt函式將乙個整數用於不同的進製顯示。

package main

import "fmt"

func main()

go語言中有兩種浮點型,float32float64

float32的浮點數的最大範圍約為3.4e38,可以使用常量定義:math.maxfloat32float64的浮點數的最大範圍約為1.8e308,可以使用乙個常量定義:math.maxfloat64

在列印浮點數時,使用fmt配合%f

package main

import "fmt"

func main()

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

var c1 complex64

c1 = 1 + 2i

var c2 complex128

c2 = 2 + 3i

fmt.println(c1)

fmt.println(c2)

go語言中的bool型別有truefalse

值得一提的是在go語言中布林值有以下的特性:

1.布林型別的變數預設值都是false

2.go語言中布林值與整形沒有任何關係

3.布林值無法參與運算,也不能進行轉換

go語言中的字串是雙引號進行宣告,而多行的原生字串可以使用``來進行宣告。

至於單引號,則用來表示單個字元。

另外,go語言中的字串都是使用utf-8編碼格式。

以下示例中定義了乙個字串。

package main

import "fmt"

func main()

可以使用\反斜槓來進行特殊字元的轉義。

轉義符含義

\r回車符(返回行首)

\n換行符(直接跳到下一行的同列位置)

\t製表符

\\單引號

\"雙引號

\\反斜槓

使用``來定義多行,並且它還具有原始字串的功能,即特殊字元在原始字串中沒有意義。

package main

import "fmt"

func main()

以下是一些字串的常用方法。注意,需要匯入strings包。

方法描述

len()

求長度,byte長度

+字串拼接

fmt.sprint()

字串拼接

strings.contains()

判斷是否包含子串

strings.hasprefix()

是否是以特定字首開始

strings.hassuffx()

是否是以特定字尾結束

strings.index()

子串出現位置,從左至右檢索

strings.lastindex()

子串出現位置,從右至左檢索

strings.split()

字串按照指定字元分割,返回陣列

strings.join(str,sep string)

陣列拼接成字串

package main

import (

"fmt"

"strings"

)func main()

當單個字元為英文時,是乙個byte型別。乙個byte標識八位二進位制數。

值得注意的是,byte等同於uint8

package main

import (

"fmt"

)func main()

當單個字元為中文,或者其他文字如韓文時,該字元為rune型別。

rune等同於uint32

如下示例,如果按照普通的len()進行遍歷,則會遍歷出byte型別,而乙個中文字元通常是3個byte,所以需要用rune來進行顯示。否則就會出現第一次遍歷出的結果。

package main

import (

"fmt"

)func main()

for _, r := range str

// 232(è) 191(¿) 153(™) 230(æ) 152(˜) 175(¯) 229(å) 173(­) 151(—) 231(ç) 172(¬) 166(¦) 228(ä) 184(¸) 178(²)

// 36825(這)26159(是)23383(字)31526(符)20018(串)

fmt.print(len(str))

// 15 按照byte進行遍歷

}

將乙個字串修改為byte型別,將乙個字串修改為rune型別:

注意:不管是byte還是rune型別,其實都是由陣列構成

package main

import (

"fmt"

)func main()

要修改字串,必須要將其轉換為byte型別或rune型別。

並且在修改時用``單引號進行包裹,改完後再將他們轉換為字串。

如下示例:

package main

import (

"fmt"

)func main()

go語言中型別轉換用的比較少,它要原本兩個不同型別支援互轉才行,如浮點型轉整型等。

如下示例,將整形轉換為浮點數:

package main

import (

"fmt"

)func main()

go 基本型別

go有許多預定義型別,這裡簡單把它們分為基本型別和高階型別。下面是基本型別列表 go的基本型別共有18個,其中int和uint的實際寬度會根據計算架構的不同而不同。在386計算架構下,它的寬度為32位元,即4個位元組。在amd64計算架構下,它們的寬度為64位元,即8個位元組。byte型別可以看作u...

Go語言 基本型別

int int8 int16 int32 int64 表示不同長度的整數 uint uint8 uint16 uint32 uint64 表示不同長度的無符號整數 uintptr 表示乙個用來儲存指標位址的整數 uintptr只是儲存位址的值,不能直接進行指標操作 float32 float64 浮...

Go 基本型別彙總

go支援一下幾種資料型別 型別稱呼 型別 type 字面量 literal 布林值bool true,false 整數int,int8,uint8,int16,uint16,int32,uint32,int64,uint64 1,0,1 浮點數float64,float32 23.5,2e 12 位...