學習go的一些筆記

2021-08-29 20:22:25 字數 1951 閱讀 9271

type cfgst struct

如果結構體不是指標:

typ := reflect.typeof(c)

val := reflect.valueof(c)

如果結構體是指標:

typ := reflect.typeof(c).elem()

val := reflect.valueof(c).elem()

結構體成員數:

val.numfield()

結構體成員名:

val.type().field(idx).name

結構體成員tag名:

typ.field(idx).tag.get("ini")

成員值:

val.field(idx).inte***ce()

值得型別斷言

switch v := val.field(idx).inte***ce().(type)

log.println(*v)

case string:

log.println(v)

}

傳值的方法會預設實現傳引用的方法,反之不成立

不能直接對內嵌型別新增方法

package main

import

("log"

)type face inte***ce

type rabbit struct

func

(r rabbit)

sayhi()

func

(r rabbit)do(

)func

(r rabbit)

bye(

)type ty int64

func

(r ty)

sayhi()

func

(r ty)

bye(

)func

(r ty)do(

)// 類似於assert斷言,在編譯時候檢查是否實現了介面

// 型別斷言是在執行時動態檢查

var_ face =

(*rabbit)

(nil

)var

_ face =

new(rabbit)

// 不推薦,因為為物件會分配空間

var_ face =

(*ty)

(nil

)func

main()

i.sayhi()

i.bye(

)var a ty // 不可少不能直接用 i = ty{}

i = a

i.sayhi()

i.bye(

)}

if v, ok := i.

(typename)

;ok

else

switch i.

(type

)

類似於型別斷言

m :=

make

(map

[string

]int,0

)if v, ok := m[

"asd"

];ok

else

go 中switch每個分支預設執行完畢break,這與c語言不一樣。

可以通過新增 fallthrough來實現類似c的效果

switch

go 中break可以指定退出的迴圈,預設只退出最內層迴圈

mark:

for}

}

學習中的一些筆記

取得某字元最後出現處起的字串。語法 string strrchr string haystack,string needle 返回值 整數 函式種類 資料處理 內容說明 本函式用來尋找字串 haystack 中的字元 needle 最後出現位置,並將此位置起至字串 haystack 結束之間的字串返...

我的一些學習筆記

集合類和陣列之間的橋梁是由 集合類中的 toarray 方法 和 陣列類中的arrarys.aslist來充當。關於迭代器 如果要呼叫 它的remove 方法則至少要先呼叫一下 next 方法。可以認為迭代器是指向兩個元素之間的位置 呼叫一次 next 它就把前乙個元素返回 remove 方法實際上...

redis 學習的一些筆記

該版本對應的vs2010 2.8對應的是2013 2 啟動執行,debug版本下的 redisserver 3 redis cli h ip port 6379 預設是127.0.0.1 埠 6379 進入cmd 1 incr key 該命令預設是整形的value 遞增key值對應的整數 2 set...