任意数据类型切片 golang

来源:互联网 发布:最优化导论pdf百度云 编辑:程序博客网 时间:2024/05/24 04:35

package mainimport ("fmt". "strconv")type Element interface{}type List []Elementtype Person struct {name stringage  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 intlist[1] = "Hello"              // a stringlist[2] = Person{"barry", 100} // structlist[3] = slice_1              // a slicelist[4] = map_1                // a mapfor _, 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可以高度抽象,让切片存放的数据类型任意!

下面是例子。