menu arrow_back 湛蓝安全空间 |狂野湛蓝,暴躁每天 chevron_right All_wiki chevron_right the-way-to-go_ZH_CN chevron_right eBook chevron_right 18.5.md
  • home 首页
  • brightness_4 暗黑模式
  • cloud
    xLIYhHS7e34ez7Ma
    cloud
    湛蓝安全
    code
    Github
    18.5.md
    951 B / 2024-07-16 23:14:29
        # 18.5 接口
    
    (1)如何检测一个值 `v` 是否实现了接口 `Stringer`:
    
    ```go
    if v, ok := v.(Stringer); ok {
        fmt.Printf("implements String(): %s\n", v.String())
    }
    ```
    
    (2)如何使用接口实现一个类型分类函数:
    
    ```go
    func classifier(items ...interface{}) {
        for i, x := range items {
            switch x.(type) {
            case bool:
                fmt.Printf("param #%d is a bool\n", i)
            case float64:
                fmt.Printf("param #%d is a float64\n", i)
            case int, int64:
                fmt.Printf("param #%d is an int\n", i)
            case nil:
                fmt.Printf("param #%d is nil\n", i)
            case string:
                fmt.Printf("param #%d is a string\n", i)
            default:
                fmt.Printf("param #%d’s type is unknown\n", i)
            }
        }
    }
    ```
    
    ## 链接
    
    - [目录](directory.md)
    - 上一节:[结构体](18.4.md)
    - 下一节:[函数](18.6.md)
    
    
    links
    file_download