许式伟Golang编程基础成为Go范.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
许式伟Golang编程基础成为Go范

成为 Go 范(Fan) 许式伟 @七牛云存储 2012-7-20 * Go 范(fan) 写出 Go 味道 Go 粉丝 * 内置类型 切片(slice) arr := make([]T, n) // make([]T, len, cap) arr := []T{t1, t2, ...} slice := arr[i:j] // arr[i:], arr[:j] 字符串(string) str := “Hello, world” substr := str[i:j] 字典(map) dict := make(map[KeyT]ValT) dict := map[KeyT] ValT{k1: v1, k2: v2, ...} dict[k] = v * 切片 (slice) append var arr []int arr = append(arr, 1) arr = append(arr, 2, 3, 4) arr2 := []int{5, 6, 7, 8} arr = append(arr, arr2...) slice cap var arr = make([]int, 0, 8) arr = append(arr, 1) arr = append(arr, 2, 3, 4) arr2 := []int{5, 6, 7, 8} arr = append(arr, arr2...) * 字典(map) 插入 dict[k] = v 删除 delete(dict, k) 查询 v, ok := dict[k] * 遍历 for .. range 遍历数组/切片/字符串 for i, elem := range arr { // ... } for i := 0; i len(arr); i++ { // 对字符串这两种遍历方式不等价 elem = arr[i] // ... } 遍历字典(map) for key, val := range dict { // ... } * 查询 检查字典中是否有某个key if val, ok := dict[key]; ok { // ... } 或: val, ok := dict[key] if ok { // ... } 接口查询 var a interface{} = ... if w, ok := a.(io.Writer); ok { // ... } * 函数(func) func func Name(arg1 T1, arg2 T2, ...) RetT { // ... } func Name(arg1 T1, arg2 T2, ...) (out1 RetT1, out2 RetT2, ...) { // ... } func Name(arg1 T1, arg2 T2, ...) (out1 RetT1, ..., err error) { // ... } 优势 输入输出清晰形象 错误处理规范 * 闭包(closure) foo := func(arg1 T1, arg2 T2, ...) RetT { // ... } out := foo(arg1, arg2, ...) bar := func(arg1 T1, arg2 T2, ...) (out1 RetT1, out2 RetT2, ...) { // ... } out1, out2, ... := bar(arg1, arg2, ...) * 错误处理 – 资源管理 文件 file, err := os.Open(fileName) if err != nil { return } defer file.Close() // … 锁 var mutex sync.Mutex // ... mutex.Lock() defer mutex.Unlock() // ... * 结构体 (struct) 是类,不只是结构体 type Foo struct { a int b string } func (this *Foo) Bar(arg1 T1, arg2 T2, ...) (out1 RetT1, ...) { // ... } * 接口(interface) type IBar interface { Bar(arg1 T1, arg2 T2, ...) (out1 RetT1, ...) } var foo IBar = new(Foo) out1, ... := foo.Bar(arg1, arg2, ...) * 接口(interface) 接口查询 var a interface{} = ... if w, ok := a.(i

文档评论(0)

fangsheke66 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档