Golang中interface{}作为函数参数和函数返回值的使用

转载:http://blog.csdn.net/chdhust/article/details/51436882


面给出一个例子:

[python]  view plain  copy
  1. package main  
  2.   
  3. import (  
  4.     "errors"  
  5.     "fmt"  
  6. )  
  7.   
  8. type item struct {  
  9.     Name string  
  10. }  
  11.   
  12. func (i item) String() string {  
  13.     return fmt.Sprintf("item name: %v", i.Name)  
  14. }  
  15.   
  16. type person struct {  
  17.     Name string  
  18.     Sex  string  
  19. }  
  20.   
  21. func (p person) String() string {  
  22.     return fmt.Sprintf("person name: %v sex: %v", p.Name, p.Sex)  
  23. }  
  24.   
  25. func Parse(i interface{}) interface{} {  
  26.     switch i.(type) {  
  27.     case string:  
  28.         return &item{  
  29.             Name: i.(string),  
  30.         }  
  31.     case []string:  
  32.         data := i.([]string)  
  33.         length := len(data)  
  34.         if length == 2 {  
  35.             return &person{  
  36.                 Name: data[0],  
  37.                 Sex:  data[1],  
  38.             }  
  39.         } else {  
  40.             return nil  
  41.         }  
  42.     default:  
  43.         panic(errors.New("type match miss"))  
  44.     }  
  45.     return nil  
  46. }  
  47.   
  48. func main() {  
  49.     p1 := Parse("Apple").(*item)  
  50.     fmt.Println(p1)  
  51.     p2 := Parse([]string{"zhangsan""man"}).(*person)  
  52.     fmt.Println(p2)  
  53. }  

输出结果:
[python]  view plain  copy
  1. item name: Apple  
  2. person name: zhangsan sex: man  
  3. 成功: 进程退出代码 0.  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值