Golang中interface{}作为函数参数和函数返回值的使用
下面给出一个例子:
package main import ( "errors" "fmt" ) type item struct { Name string } func (i item) String() string { return fmt.Sprintf("item name: %v",i.Name) } type person struct { Name string Sex string } func (p person) String() string { return fmt.Sprintf("person name: %v sex: %v",p.Name,p.Sex) } func Parse(i interface{}) interface{} { switch i.(type) { case string: return &item{ Name: i.(string),} case []string: data := i.([]string) length := len(data) if length == 2 { return &person{ Name: data[0],Sex: data[1],} } else { return nil } default: panic(errors.New("type match miss")) } return nil } func main() { p1 := Parse("Apple").(*item) fmt.Println(p1) p2 := Parse([]string{"zhangsan","man"}).(*person) fmt.Println(p2) }
输出结果:
item name: Apple person name: zhangsan sex: man 成功: 进程退出代码 0.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。