Go学习日志:func、interface、test

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

  1. 接口是一个或多个方法签名的集合

  2. 只要某个类型拥有该接口的所有方法签名,就算实现了该接口,无需显示声明实现了哪个接口,这称之为 Structural Typing

3. 接口只有方法声明,没有实现,没有数据结构字段

  1. 接口可以匿名嵌入其他接口,或者嵌入到接口中

5. 将对象复制给接口,会发生拷贝,而接口内部存储的是指向这个复制品的指针,即无法修改复制品的状态,也无法获取指针

  1. 接口调用不会做receiver的自动转换

  2. 接口也可以实现类似OOP中的多态

8. 空接口可以作为任何类型数据的容器

猜你喜欢

转载自blog.csdn.net/weixin_33985679/article/details/86797054
今日推荐