任意数据类型切片 golang

yatere · · 3469 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

package main

import (
	"fmt"
	. "strconv"
)

type Element interface{}
type List []Element

type Person struct {
	name string
	age  int
}

func (P Person) String() string {
	return "My name is " + P.name + " my age is " + Itoa(P.age)
}

var slice_1 = []string{"hello"}
var map_1 = map[string]string{"city": "beijing", "name": "cs", "from": "usa"}

func main() {

	list := make(List, 5)
	list[0] = 1                    // an int
	list[1] = "Hello"              // a string
	list[2] = Person{"barry", 100} // struct
	list[3] = slice_1              // a slice
	list[4] = map_1                // a map

	for _, element := range list {
		switch v:=element.(type) { //v是具体的值对象了,而element还是interface对象
		case int:
			fmt.Println(element, ",int")
		case string:
			fmt.Println(element, ",string")
		case Person:
			fmt.Println(element, ",Person struct")
		default:
			fmt.Println(element, ",others like slice,map...")
		}
	}

}

一般切片只能存放一种数据类型,但是有了interface可以高度抽象,让切片存放的数据类型任意!

下面是例子。




有疑问加站长微信联系(非本文作者)

本文来自:CSDN博客

感谢作者:yatere

查看原文:任意数据类型切片 golang

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

3469 次点击  
加入收藏 微博
下一篇:golang Package
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传