Golang中interface{}作为函数参数和函数返回值的使用
发布时间:2020-12-16 19:27:46 所属栏目:大数据 来源:网络整理
导读:packagemainimport("errors""fmt")typeitemstruct{Namestring}func(iitem)String()string{returnfmt.Sprintf("itemname:%v",i.Name)}typepersonstruct{NamestringSexstring}func(pperson)String()string{returnfmt.Sprintf("personname:%vsex:%v",p.Name,p.S
packagemain import( "errors" "fmt" ) typeitemstruct{ Namestring } func(iitem)String()string{ returnfmt.Sprintf("itemname:%v",i.Name) } typepersonstruct{ Namestring Sexstring } func(pperson)String()string{ returnfmt.Sprintf("personname:%vsex:%v",p.Name,p.Sex) } funcParse(iinterface{})interface{}{ switchi.(type){ casestring: return&item{ Name:i.(string),} case[]string: data:=i.([]string) length:=len(data) iflength==2{ return&person{ Name:data[0],Sex:data[1],} }else{ returnnil } default: panic(errors.New("typematchmiss")) } returnnil } funcmain(){ p1:=Parse("Apple").(*item) fmt.Println(p1) p2:=Parse([]string{"zhangsan","man"}).(*person) fmt.Println(p2) } 输出结果: itemname:Apple personname:zhangsansex:man 成功:进程退出代码0. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |