for i,value range slice
//方式一
ages:=make(map[string]int)
//方式二
ages:=map[string]int
//delete 乙個元素
delete(ages,"alice")
ages["bob"] = ages["bob"] +1
//如果沒有bob會返回0
ages["bob"] +=1
ages["bob"]++
_ = &ages["bob"] //無法進行取位址操作,並非是變數
for name, age := range ages //遍歷操作
for
name := range ages
sort.strings(names)
for _, name := range names
檢視是否存在在map中
age,ok:=ages["bob"]
if !ok
//一般這樣用:
if age, ok := ages["bob"]; !ok
type
point struct
type
circle struct
type
wheel struct
var w wheel
w.x=8 // =w.circle.point.x
w.radius=5
w=wheel //無效
w=wheel //無效
w=wheel,5},20} //可以
因為匿名成員也有乙個隱式的名字,因此不能同時包含兩個型別相同的匿 名成員,這會導致名字衝突。同時,因為成員的名字是由其型別隱式地決定的, 所有匿名成員也有可見性的規則約束。
encoding/json、encoding/xml、encoding/asn1等包
type movie struct
var movies=movie},
},}
這樣的資料結構特別適合 json 格式,並且在兩種之間相互轉換也很容易。 將乙個 go 語言中類似 movies 的結構體 slice 轉為 json 的過程叫編組 (marshaling)。編組通過呼叫 json.marshal 函式完成:
data,err:=json.marshal
(movies)
if err!=nil
fmt.printf("%s\n",data)
marshal函式返還乙個編碼後的位元組slice,包含很長的字串,並且沒 有空白縮排;我們將它折行以便於顯示:
[,,]
這種緊湊的表示形式雖然包含了全部的資訊,但是很難閱讀。為了生成便 於閱讀的格式,另乙個 json.marshalindent 函式將產生整齊縮排的輸出。 該函式有兩個額外的字串引數用於表示每一行輸出的字首和每乙個層級的 縮排:
data, err := json.marshalindent(movies, "", " ") if
err != nil
fmt.printf("%s\n", data)
輸出為:
[,if
err:=json.unmarshal(data,&titles);err!=nil
每一次函式呼叫都必須按照宣告順序為所有引數提供實參(引數值)。在 函式呼叫時,go 語言沒有預設引數值,也沒有任何方法可以通過引數名指定 形參,因此形參和返回值的變數名對於函式呼叫者而言沒有意義。
在函式體中,函式的形參作為區域性變數,被初始化為呼叫者提供的值。函 數的形參和有名返回值作為函式最外層的區域性變數,被儲存在相同的詞法塊 中。
實參通過值的方式傳遞,因此函式的形參是實參的拷貝。對形參進行修改 不會影響實參。但是,如果實參包括引用型別,如指標,slice(切片)、map、 function、channel 等型別,實參可能會由於函式的簡介引用被修改。
你可能會偶爾遇到沒有函式體的函式宣告,這表示該函式不是以 go 實現 的。這樣的宣告定義了函式識別符號。
go語言的一些經驗理解
注 go build是將原始碼檔案編譯成乙個二進位制的可執行檔案,如go build test.go可以在test.go所在的imooc檔案目錄下生成乙個test可執行檔案。只需.test便可輸出執行結果。go run則是將程式直接執行並輸出結果,不會生成二進位制可執行檔案。2 我們要保證我們執行編...
go語言的一些吐槽
struct的方法,如果receiver非指標,則呼叫這個方法無法改變物件狀態,因為傳遞給方法的物件是原物件的乙個拷貝,所有的改變都被作用在這個拷貝上而非原物件上.type st struct func this st show func this st increase func main b.i...
Go語言的一些問題
只要將檔案儲存一下,再執行就ok了。2.問題如下 d goprojects go build can t load package package no go files in d goprojects 3.截圖操作 起別名的命令,處理建立的二進位制檔案 4.主要要反覆儲存寫好的檔案,還有右下角出現...