码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-07-21 23:31:04      阅读:310      评论:0      收藏:0      [点我收藏+]

标签:使用   re   c   代码   ar   new   

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.


Golang中interface{}作为函数参数和函数返回值的使用,布布扣,bubuko.com

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

标签:使用   re   c   代码   ar   new   

原文地址:http://my.oschina.net/xlplbo/blog/293311

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!