interface切片定义语法:
arr := []interface{}{}
or
arr := make([]interface{}, 0)
一开始有点懵,仔细一想,interface{} 才是一个数据类型,所以第一种方法后面两个大括号不足为奇;第二种方法,比较清晰。这个切片可以存储所有的数据类型,以前我记得老师说实际作用不大,认识就行,小demo
//arr := []interface{}{}
arr := make([]interface{}, 0)
type mystc struct{
data int
}
m := mystc{1}
arr = append(arr, 1)
arr = append(arr, "222")
arr = append(arr, m)
for _,v := range arr{
fmt.Println(v)
}
结果
1
222
{1}
然后就是chan切片
就是好几个chan在一起的数据类型
语法是
chans := []<-chan int{}
案例:
chans := []<-chan int{}
chan1 := make(chan int, 3)
chan2 := make(chan int, 4)
for i := 0;i<3;i++{
chan1<-i
chan2<-i
}
close(chan1)
close(chan2)
chans = append(append(chans, chan1), chan2)
fmt.Printf("chan1的地址%v,\nchan1的地址%v\n,chans :%v", chan1,chan2,chans)
chan1的地址0xc042064080,
chan1的地址0xc042064100,
chans :[0xc042064080 0xc042064100]