四 golang型別講解 go語言學習筆記

2021-07-10 23:32:30 字數 1985 閱讀 8947

擅自使用了七牛大牛們的ppt資料,希望不要怪罪,這裡謝謝大牛們的分享。

乙個」鍵-值」對

關鍵點:注意併發讀寫情況,上鎖

不能對未初始化的 map 進行寫,會拋異常(panic)

對於迭代操作,每次結果可能不一致(亂序)

var m map[string]int

m["k1"] =7

// 錯誤: assignment to entry in nil map

m := make(map[string]int) // 初始化成乙個空 map: , 可以進行讀寫

m["k1"] =7

m["k2"] =13

delete(m, "k2") // 刪除 "k2" 對應的值

v, ok := m["k2"] // 檢查 "k2" 對應的值是否存在

fmt.println(m["k3"]) // 不存在的 key 預設返回空值

for k, v := range m

make() 內建方法只能用於建立 slice, map 和 channel

slice, map, channel 是指向底層資料結構的引用,使用前必須被初始化

go 有指標,但是沒有指標運算。你不能 用指標變數遍歷字串的各個位元組。

go 指標只是一種引用。

取址操作符 & 獲取變數存放位址,可以賦給乙個指標。

type person struc 

p := new(person)

p.name = "lishi"

// 首字母大寫字段,可匯出,可在其它包中進行讀寫

p.age = "28"

p.parent = "he"

// 首字母小寫字段,不可匯出,不可在其它包中進行讀寫

func (p *person) study(lang string) 

p.study("golang")

type s struct 

type b struct

var b b

b.s.a = "a"

// 給匿名字段 s 賦值

b.a = "a"

// 同上

fmt.println(b)

// 輸出結果: }

不是type string string

b.s.b = "b"

// 給匿名字段 s 賦值

b.b =10

// 名字衝突,不同上,不能這樣給匿名欄位中的相同字段賦值

type s struct 

type b struct

func (s *s) string()

var b b

b.a = "a"

b.b = "b"

b.s.string()

b.string() // 等價於 b.s.string()

給型別 b 新增乙個方法覆蓋型別 s 中的 string()

type s struct 

type b struct

func (s *s) string()

func (b *b) string()

var b b

b.a = "a"

b.b = "b"

b.s.string()

b.string() // 不等價於 b.s

.string()

type b struct 

unsafe.sizeof(b) => 32

type a struct 

unsafe.sizeof(a) => 24

四 Go 語言資料型別

在 go 程式語言中,資料型別用於宣告函式和變數。資料型別的出現是為了把資料分成所需記憶體大小不同的資料,程式設計的時候需要用大資料的時候才需要申請大記憶體,就可以充分利用記憶體。go 語言按類別有以下幾種資料型別 序號型別和描述 1布林型 布林型的值只可以是常量 true 或者 false。乙個簡...

Go語言的基本型別轉換 golang型別轉換

簡單整理一下golang的基本型別轉換,作為備忘 1 整形到字串 var i int 1 var s string 3.s strconv.itoa i 或者 s formatint int64 i 10 2 字串到整形 var s string 1 var i int i,err strconv....

(一)golang 初識go語言

使用1.9.2的版本 golang golanguage的簡稱 也就是go語言 可以應用於區塊鏈研發工程師 go伺服器端 遊戲軟體工程師 golang分布式 雲計算軟體工程師等。google為什麼要建立go語言?1 計算機硬體技術更新頻繁,效能提公升很快,主流的程式語言不能合理利用多核多cpu的優勢...