擅自使用了七牛大牛們的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的優勢...