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