转载:http://blog.youkuaiyun.com/chdhust/article/details/51436882
面给出一个例子:
- 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)
- }
输出结果:
本文通过一个Go语言示例介绍了如何使用类型断言来解析不同类型的输入数据,并展示了如何为自定义结构体实现String方法以方便打印。

1285

被折叠的 条评论
为什么被折叠?



