mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-11 23:52:31 +08:00
modified: eBook/18.5.md modified: eBook/18.6.md modified: eBook/18.8.md modified: eBook/18.9.md
950 B
950 B
18.5 接口
(1)如何检测一个值v
是否实现了接口Stringer
:
if v, ok := v.(Stringer); ok {
fmt.Printf("implements String(): %s\n", v.String())
}
(2)如何使用接口实现一个类型分类函数:
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)
}
}
}