博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Effective Go(官方文档)笔记
阅读量:4656 次
发布时间:2019-06-09

本文共 1826 字,大约阅读时间需要 6 分钟。

Effective Go(官方文档)笔记

  1. 自己主动局部变量提升(编译期完毕?):return &...;
  2. 内置函数:
    1. new/make
    2. copy, append
    3. delete
    4. range(这是keyword吧?由于后面没有())
  3. array是值对象
  4. slice:引用array
    1. 2维切片(略)
  5. map
    1. if seconds, ok := timezone[tz]; ok { ...
  6. func (f *File) Read(buf []byte) (n int, err error) { ...
    1. 注意这里给*File类型添加了一个Read方法,buf是传出參数(slice是引用!

  7. fmt.Printf("...%d...", 1); //C风格的;
    1. fmt.Printf(os.stdout, args, ...); //C++风格的?这里args须要实现io.Writer接口(序列化?)
    2.  %v, %#v
    3.  %T
  8. type MyString string
  9. switch t := t.(type){ ... //Go的执行时内省是怎么实现的?这意味着每个value/ref都包括了一个type域字段吗?
  10. 变參:v ...interface{} ==> v... (不加...的单独v可看作slice,可应用range操作)
  11. func append(slice []T, elements ...T) []T
    1. append:实际上不能在执行时决定T的类型。需编译器在编译时的支持(所谓的builtin函数)
  12. defer:推迟到func结束前运行。即使是panic(函数作用域。非block)
    1. C/C++/Java程序猿能够理解为func内部总体包以try{...}finally{...}?
  13. 枚举:const { _= iota \n A B C ... }
  14. 变量组声明:var { ... }
  15. 每一个文件里的init():用于验证初始状态?
  16. sort回调:Len() int, Less(i, j int) bool, Swap(i, j int) //这相当于把排序对象当作一个C++里的RandomAccessIterator接口?
  17. 类型转换
    1. str := value.(string) //如类型不匹配则runtime error;
  18. net/http
    1. type Handler interface {
      ServHTTP(w ResponseWriter, req *Request)
    2. => 一旦有了Handler实例,向http注冊:http.Handle("/path", handler)
  19. tie a channel to web page ?

  20. 为func扩展方法:
    1. type HandlerFunc func(ResponseWriter, *Request)
    2. func (f HandlerFunc) ServHTTP(w ..., req ...) { f(w, req) }
  21. _ = fd //unused, WebKit/Chromium里常常能够见到这样的写法,未使用的变量显式标记。未用到的代码要删除
  22. Embedding(type的组合)
    1. type struct里能够直接增加其它type的名字,无需变量名字。此时相当于type traits的mixin了?
  23. Share by communicating
    1. Goroutines:the stack starts small(可动态调整的栈)——这可能就是Go支持大规模并发程序的原因了
    2. <-chan:等待完毕消息(自己主动堵塞)
  24. * for循环变量(设为i)是重用的?=>
    1. go func(i ...){ ... )(i) //传递进闭包,产生新的副本
    2. i := i //名字的shadowing(这个特性C语言是没有的。C++的namespace能够觉得类似?)
  25. Channels of channels
  26. 并行:runtime.GOMAXPROCS(ncpu)
  27. panic/recover
    1. recover在unwinding时运行,即defer func() {...}中。
posted on
2017-05-13 09:45 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/mthoutai/p/6848138.html

你可能感兴趣的文章
2018.12.29 111
查看>>
2013年MBA、MPA、MPAcc入学考试英语辅导教材
查看>>
JavaScript高级程序设计:第2版(china-pub首发)
查看>>
HDU1512 ZOJ2334 Monkey King 左偏树
查看>>
BZOJ1823 [JSOI2010]满汉全席 2-sat
查看>>
Codeforces 1053C Putting Boxes Together 树状数组
查看>>
算法思维方式之二——DP与DFS
查看>>
网页版分享功能
查看>>
查找算法之二分查找法
查看>>
创建界面视图的流程
查看>>
微信公众平台体验(二)JS-SDK
查看>>
[Leetcode] Linked List Cycle
查看>>
第十九节(异常的基本概念, 异常的分类, 异常的捕获和处理,自定义异常,方法覆盖与异常)...
查看>>
齐头并进
查看>>
HTMLTestRunner修改成Python3版本
查看>>
数据结构之栈
查看>>
div+css 兼容ie6 ie7 ie8 ie9和FireFox Chrome等浏览器方法[ZT]
查看>>
Redis的Sentinel
查看>>
ssis [执行 SQL 任务] 错误: 未能获取连接 原因可能是连接配置不正确,或者您没有访问该连接的适当权限。...
查看>>
ajax课1 源码
查看>>