Effective Go(官方文档)笔记

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() {...}中。
时间: 2024-10-19 10:10:41

Effective Go(官方文档)笔记的相关文章

docker官方文档笔记

Docker在 CentOS7.X上运行.Docker可能在其他EL7的兼容版本中成功安装,但是官方并未进行测试,因此也不提供任何支持. 系统环境要求 docker必须运行在64-bit的系统上,对于CentOS的版本号并没有特别要求.另外,如果需要在CentOS上安装,内核版本必须高于3.10. 通过uname -r 查看内核版本 uname -r 3.10.0-327.el7.x86_64 脚本安装 可以通过以下两种方法安装Docker Engine.使用 yum包管理器: 或者使用 cur

TensorFlow官方文档MNIST初学笔记[二]

TensorFlow官方文档MNIST初学笔记[二] MNIST是一个简单的计算机视觉数据集, 它还包括每个图像的标签, 每个图像是28像素乘以28像素, 我们可以把这个数组变成一个28×28 = 784个数字的向量.MNIST只是一个784维向量空间中的一个点.mnist.train.images具有形状的张量(n维阵列)[55000, 784] 第一维度是图像列表中的索引,第二维度是每个图像中每个像素的索引.对于特定图像中的特定像素,张量中的每个条目是0和1之间的像素强度. MNIST中的每

TensorFlow官方文档入门笔记[一]

TensorFlow官方文档入门笔记[一] 张量 3 # a rank 0 tensor; this is a scalar with shape [] [1., 2., 3.] # a rank 1 tensor; this is a vector with shape [3] [[1., 2., 3.], [4., 5., 6.]] # a rank 2 tensor; a matrix with shape [2, 3] [[[1., 2., 3.]], [[7., 8., 9.]]] #

Jinja2学习笔记暨官方文档的翻译

http://blog.csdn.net/lgg201/article/details/4647471 呵呵, 刚刚看完Python模板引擎Jinja2的文档, 感觉很好, 觉得动态语言真是很好.  模板引擎竟然可以做的如此灵活....真是不错.... 下面直接把看文档过程的笔记发布出来, 呵呵, 基本上就是翻译, 加了不多的一点自己的解释......希望可以帮到大家 补充: 1. 在模板中设置自定义变量: {% set variable_name = value %} 比如设置{% set u

Swift -- 官方文档Swift-Guides的学习笔记

在经历的一段时间的郁闷之后,我发现感情都是虚伪的,只有代码是真实的(呸) 因为看了swift语法之后依然不会用swift,然后我非常作死的跑去看官方文档,就是xcode里自带的help>documentation and API reference 其中的swift里的guide 这里主要总结一下里面每一章讲了什么,还有自己学到的东西和需要研究的东西 part 2:Building a Basic UI work with view controllers 关于比较基础的viewDidLoad,

Spring Boot 官方文档入门及使用

个人说明:本文内容都是从为知笔记上复制过来的,样式难免走样,以后再修改吧.另外,本文可以看作官方文档的选择性的翻译(大部分),以及个人使用经验及问题. 其他说明:如果对Spring Boot没有概念,请先移步上一篇文章 Spring Boot 学习.本篇原本是为了深入了解下Spring Boot而出现的. 另外,Spring Boot 仍然是基于Spring的,建议在赶完工之后深入学习下Spring,有兴趣可以看看我的 Spring 4 官方文档学习(十一)Web MVC 框架 .欢迎探讨,笑~

官方文档 恢复备份指南三 Recovery Manager Architecture

本节讨论以下问题: About the RMAN Environment                        关于RMAN环境 RMAN Command-Line Client                            RMAN命令行 RMAN Channels                                                      RMAN通道 RMAN Repository                                

【AutoMapper官方文档】DTO与Domin Model相互转换(上)

前言 Flattening-复杂到简单 Projection-简单到复杂 Configuration Validation-配置验证 Lists and Array-集合和数组 Nested mappings-嵌套映射 后记 上一篇<[道德经]漫谈实体.对象.DTO及AutoMapper的使用 >,因为内容写的有点跑偏,关于AutoMapper的使用最后只是简单写了下,很明显这种简单的使用方式不能满足项目中复杂的需要,网上找了下AutoMapper相关文档,但差不多都是像我一样简单的概述下,看

hbase官方文档(转)

Apache HBase™ 参考指南  HBase 官方文档中文版 Copyright © 2012 Apache Software Foundation.保留所有权利. Apache Hadoop, Hadoop, MapReduce, HDFS, Zookeeper, HBase 及 HBase项目 logo 是Apache Software Foundation的商标. Revision History Revision 0.95-SNAPSHOT 2012-12-03T13:38 中文版