首页 > 代码库 > Golang中interface{}作为函数参数和函数返回值的使用
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.
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。