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)