Golang interface{} 作为函数参数和函数返回值例子
发布时间:2020-12-16 18:08:14 所属栏目:大数据 来源:网络整理
导读: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
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{"zhanghan","man"}).(*person)
fmt.Println(p2)
fmt.Println(p1.Name)
fmt.Println(p2.Name)
fmt.Println(p2.Sex)
}
运行结果如下: 例子来源:http://www.52php.cn/article/p-beylukyv-boy.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |