Map里裝填func
package main
import "fmt"
func f(p string) {
fmt.Println("function f parameter:", p)
}
func g(p string, q int) {
fmt.Println("function g parameters:", p, q)
}
func main() {
m := map[string]interface{}{
"f": f,
"g": g,
}
for k, v := range m {
switch k {
case "f":
v.(func(string))("astring")
case "g":
v.(func(string, int))("astring", 42)
}
}
}
Test框架
go test -v converts_test.go converts.go -run TestTrimBuffToString
結果:
=== RUN TestTrimBuffToString
--- PASS: TestTrimBuffToString (0.00s)
converts_test.go:86: json: ["hello","world"]
PASS
ok command-line-arguments 0.006s
Interface
原文:https://blog.csdn.net/ghost_leader/article/details/77126918
接口是一個或多個方法簽名的集合
只要某個類型擁有該接口的所有方法簽名讶凉,就算實現了該接口,無需顯示聲明實現了哪個接口山孔,這稱之為 Structural Typing
3. 接口只有方法聲明懂讯,沒有實現,沒有數據結構字段
- 接口可以匿名嵌入其他接口台颠,或者嵌入到接口中
5. 將對象復制給接口褐望,會發(fā)生拷貝,而接口內部存儲的是指向這個復制品的指針蓉媳,即無法修改復制品的狀態(tài)譬挚,也無法獲取指針
接口調用不會做receiver的自動轉換
接口也可以實現類似OOP中的多態(tài)
8. 空接口可以作為任何類型數據的容器