Go 基本型別彙總

2021-10-10 16:33:36 字數 4162 閱讀 4869

go支援一下幾種資料型別

型別稱呼

型別(type)

字面量(literal)

布林值bool

true,false

整數int, int8, uint8, int16, uint16, int32, uint32, int64, uint64

…-1,0,1…

浮點數float64, float32

23.5, 2e-12

位元組byte (uint8, 1個char)

『a』符文

rune (int32, 1個unicode字元)

『b』字串

string

「hello」,『world』

常量constants

const a = 8

結構體structs

type foo struct {}

切片slice (可變長向量)

int =

陣列array (固定長度向量)

[2]int =

對映map (其他語言中成為字典dict或雜湊表hash table)

map[string]int

布林型別關鍵字為bool,它的取值為truefalse,未賦值的布林值為false,布林型別的長度為1位元組。

布林基本用法

package main

import

("fmt"

)func

main()

有符號和無符號

go語言有固定長度的有符號和無符號整數型別,預設值為0:

屬性值描述

有符號int8

-128 到 127

int16

-32768 到 32767

int32

-2147483648 到 2147483647

int64

-9223372036854775808 到 9223372036854775807

無符號uint8/td>

0 到 255

uint16

0 到 65535

uint32

0 到 4294967295

uint64

0 到 18446744073709551615

依賴於cpu架構的整型

int在32為處理器上表示int32,在64位處理器上表示int64

uint

在32位處理器上是uint32,在64位處理器上是uint64

實現intstring

方法一:strconv.itoa()

package main

import

("fmt"

"strconv"

)func

main()

方法二:fmt.sprintf()

package main

import

("fmt"

)func

main()

實現stringint

方法一:stronv.atoi()

package main

import

("fmt"

"log"

"strconv"

)func

main()

fmt.

printf

("i1: %d\n"

, i1)

// i1: -52

}

方法二:fmt.sscanf()

package main

import

("fmt"

"log"

)func

main()

fmt.

printf

("i1: %d\n"

, i)

// i1: 348

}

float32大約可以提供小數點後6位的精度,作為對比,float64可以提供小數點後15位的精度。通常情況應該優先選擇float64,因此float32的精確度較低,在累積計算時誤差擴散很快,而且float32能精確表達的最小正整數並不大,因為浮點數和整數的底層解釋方式完全不同,具體自行搜尋ieee754詳解。

型別描述

float32

ieee-754 32位浮點型數

float64

ieee-754 64位浮點型數

complex64

32 位實數和虛數

complex128

64 位實數和虛數

浮點數基本用法

// 浮點型的用法

package main

import

("fmt"

"unsafe"

)func

main()

go有兩種字元型別:

byterune的預設值是0。

使用byte遍歷字串

package main

import

("fmt"

"unsafe"

)func

main()

}

使用rune遍歷字串
package main

import

"fmt"

func

main()

}

乙個字串本質上是乙個位元組陣列。

當用rune遍歷字串時,編譯器會假定待遍歷的是用utf-8編碼的unicode字串。

utf-8是一種變長編碼方案,被編碼的每個字元的長度可能是1,2,3或4位元組。這樣遍歷時,返回的變數i表示每個字元起始位元組的位置,而不是字元所在串中第幾個位置。

go語言中字串是乙個不可變的位元組(8-bit byte)序列。

string的預設值是空字串""

字串基本用法

package main

import

("fmt"

)func

main()

常量是乙個簡單值的識別符號,在程式執行時,不會被修改的量。

常量的宣告:

const

( i int=32

// int constant

s =

"string"

// string constant

i2 =

33// untyped number constant

)var

(// 非唯讀型別的值(如切片和對映)則不可以宣告為常量

// 我們只能把它們宣告為變數

b =byte

// 這不是乙個常量

)

結構體的作用是將多個值聚合為單個實體。

乙個struct的零值是其字段被設為各自的零值

struct宣告方式:

package main

import

"fmt"

type books struct

func

main()

)//

// 也可以使用 key => value 格式

fmt.

println

(books

)//

// 忽略的字段為 0 或 空

fmt.

println

(books

)//

}

go 語言切片是對陣列的抽象。

go 陣列的長度不可改變,在特定場景中這樣的集合就不太適用,go中提供了一種靈活,功能強悍的內建型別切片(「動態陣列」),與陣列相比切片的長度是不固定的,可以追加元素,在追加時可能使切片的容量增大。

Go 基本型別

標準整形是按長度進行分類的,其中uint8為byte型,int16為c語言中的short型,int64為c語言中的long型別。型別描述 uint8 無符號 8位整型 0 到 255 uint16 無符號 16位整型 0 到 65535 uint32 無符號 32位整型 0 到 4294967295...

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 浮...