package main
import("fmt""strconv")
type Book struct {
name string
author string
price float64
}func(b *Book)String() string {return b.name + b.author + strconv.FormatFloat(b.price,'E',-1,64)}
func main(){func(args ...interface{}){for _, arg := range args {switch v := arg.(type){//只是判断,是什么类型还是什么类型case int:
fmt.Println(v)case string:
fmt.Println(v)default:
fmt.Println(v)if v, ok := arg.(fmt.Stringer); ok {//若ok为false时,v将被置为nil
fmt.Println(v)//_, ok := v.(string) 明确了arg转换成了Stringer接口类型的对象v string does not implement fmt.Stringer (missing String method)//fmt.Println(ok)
val := v.String()
fmt.Println(val)}else{
fmt.Println("该类型没有实现Stirnger接口")
fmt.Println(v)}}}}(1,"mynameis xtty",9.99,[]int{1,2,3}, map[string]int{"age":123},[]byte{'1','2','3'},&Book{"walk in daynight","japanese",12.79})}
Output
F:\GoWork> go run test8.go
1
mynameis xtty
9.99
该类型没有实现Stirnger接口
<nil>[123]
该类型没有实现Stirnger接口
<nil>
map[age:123]
该类型没有实现Stirnger接口
<nil>[495051]
该类型没有实现Stirnger接口
<nil>
walk in daynightjapanese1.279E+01
walk in daynightjapanese1.279E+01
walk in daynightjapanese1.279E+01