## 切片
1、初始化:数组需要指定大小,不指定也会根据初始化的自动推算出大小,不可改变
数组: a := [...]int{1,2,3} a := [3]int{1,2,3}
2、切片不需要指定大小
切片: a:= []int{1,2,3} a := make([]int, 5) a := make([]int, 5, 10)
```go
Food :=[]string{"bread","Salad","egg"}
fmt.Printf("切片操作:%q\n长度:%v\n容量:%v",Food[:2],len(Food),cap(Food))
Food = append(Food,"Super Banana")
输出结果:
切片操作:["bread" "Salad"]
长度:3
容量:3
```
## Map集合
```go
var ccm map[string]string
ccm = make(map[string]string)
ccm["France"] = "Paris"
ccm["Italy"] = "罗马"
ccm["Japan"] = "东京"
ccm["India"] = "新德里"
for k,v := range ccm{
fmt.Println(k,v)
}
delete(ccm,"India")
fmt.Println("\n删除Indea之后的map",ccm)
输出结果:
France Paris
Italy 罗马
Japan 东京
India 新德里
输出结果:
删除Indea之后的map map[France:Paris Italy:罗马 Japan:东京]
```
## 接口
接⼝是一个或多个方法签名的集合,任何非接口类型只要拥有与之对应的全部方法实现 (包括相同的名称、参数列表以及返回值。),就表示它"实现" 了该接口,无需显式在该类型上添加接口声明。此种方式又被称作Duck Type。
```go
package main
import "fmt"
func main() {
People := Student{"Mr.Potato"}
fmt.Println(People.ReturnName())
checkInterface(People)
}
type People interface {
ReturnName() string
}
// 定义一个结构体
type Student struct {
Name string
}
// 定义结构体的一个方法。
// 突然发现这个方法同接口People的所有方法(就一个)//此时可直接认为结构体Student实现了接口Peoplefunc (s Student) ReturnName() string {
return s.Name
}
func checkInterface(test interface{}){
if _,ok := test.(People); ok{
fmt.Println("No problem!!!")
}
}
```
有疑问加站长微信联系(非本文作者))