Go 简明笔记 高级篇

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

## 切片 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!!!") } } ```

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

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

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