Effective Go(官方文档)笔记
Effective Go(官方文档)笔记
- 自己主动局部变量提升(编译期完毕?):return &...;
- 内置函数:
- new/make
- copy, append
- delete
- range(这是keyword吧?由于后面没有())
- array是值对象
- slice:引用array
- 2维切片(略)
- map
- if seconds, ok := timezone[tz]; ok { ...
- func (f *File) Read(buf []byte) (n int, err error) { ...
- 注意这里给*File类型添加了一个Read方法,buf是传出參数(slice是引用!
)
- 注意这里给*File类型添加了一个Read方法,buf是传出參数(slice是引用!
- fmt.Printf("...%d...", 1); //C风格的;
- fmt.Printf(os.stdout, args, ...); //C++风格的?这里args须要实现io.Writer接口(序列化?)
- %v, %#v
- %T
- type MyString string
- switch t := t.(type){ ... //Go的执行时内省是怎么实现的?这意味着每个value/ref都包括了一个type域字段吗?
- 变參:v ...interface{} ==> v... (不加...的单独v可看作slice,可应用range操作)
- func append(slice []T, elements ...T) []T
- append:实际上不能在执行时决定T的类型。需编译器在编译时的支持(所谓的builtin函数)
- defer:推迟到func结束前运行。即使是panic(函数作用域。非block)
- C/C++/Java程序猿能够理解为func内部总体包以try{...}finally{...}?
- 枚举:const { _= iota \n A B C ... }
- 变量组声明:var { ... }
- 每一个文件里的init():用于验证初始状态?
- sort回调:Len() int, Less(i, j int) bool, Swap(i, j int) //这相当于把排序对象当作一个C++里的RandomAccessIterator接口?
- 类型转换
- str := value.(string) //如类型不匹配则runtime error;
- net/http
- type Handler interface {
- ServHTTP(w ResponseWriter, req *Request)
- => 一旦有了Handler实例,向http注冊:http.Handle("/path", handler)
- type Handler interface {
- tie a channel to web page ?
- 为func扩展方法:
- type HandlerFunc func(ResponseWriter, *Request)
- func (f HandlerFunc) ServHTTP(w ..., req ...) { f(w, req) }
- _ = fd //unused, WebKit/Chromium里常常能够见到这样的写法,未使用的变量显式标记。未用到的代码要删除
- Embedding(type的组合)
- type struct里能够直接增加其它type的名字,无需变量名字。此时相当于type traits的mixin了?
- Share by communicating
- Goroutines:the stack starts small(可动态调整的栈)——这可能就是Go支持大规模并发程序的原因了
- <-chan:等待完毕消息(自己主动堵塞)
- * for循环变量(设为i)是重用的?=>
- go func(i ...){ ... )(i) //传递进闭包,产生新的副本
- i := i //名字的shadowing(这个特性C语言是没有的。C++的namespace能够觉得类似?)
- Channels of channels
- 并行:runtime.GOMAXPROCS(ncpu)
- panic/recover
- recover在unwinding时运行,即defer func() {...}中。
Effective Go(官方文档)笔记的更多相关文章
- docker官方文档笔记
Docker在 CentOS7.X上运行.Docker可能在其他EL7的兼容版本中成功安装,但是官方并未进行测试,因此也不提供任何支持. 系统环境要求 docker必须运行在64-bit的系统上,对于 ...
- Vue官方文档笔记(二)
23.$refs是什么东东? 通过在标签上设置ref属性,然后在Vue实例方法中可以通过$refs拿到这些标签,如: <input ref="input"> metho ...
- React官方文档笔记之快速入门
快速开始 JSFiddle 我们建议在 React 中使用 CommonJS 模块系统,比如 browserify 或 webpack. 要用 webpack 安装 React DOM 和构建你的包: ...
- Vue官方文档笔记
1.如何创建一个Vue实例对象? var vm = new Vue({ el: "#app", //标签id 或 标签类名 data:{ //双向绑定的数据 message: &q ...
- Spring 官方文档笔记---Bean
In Spring, the objects that form the backbone of your application and that are managed by the Spring ...
- pm2 官方文档 学习笔记
一.安装 1.安装 npm install pm2 -g 2.更新 npm install pm2 -g && pm2 update pm2 update 是为了刷新 PM2 的守护进 ...
- vue.js 2.0 官方文档学习笔记 —— 01. vue 介绍
这是我的vue.js 2.0的学习笔记,采取了将官方文档中的代码集中到一个文件的形式.目的是保存下来,方便自己查阅. !官方文档:https://cn.vuejs.org/v2/guide/ 01. ...
- Swift -- 官方文档Swift-Guides的学习笔记
在经历的一段时间的郁闷之后,我发现感情都是虚伪的,只有代码是真实的(呸) 因为看了swift语法之后依然不会用swift,然后我非常作死的跑去看官方文档,就是xcode里自带的help>docu ...
- ios学习笔记第四天之官方文档总结
start developing ios app today. 官方文档的体系结构为: 各层的主要框架图: objectice-c是动态语言 Objective-C 为 ANSI C 添加了下述语法和 ...
随机推荐
- [持续集成学习篇]【1】[jenkins安装与配置]
Guided Tour This guided tour will use the "standalone" Jenkins distribution which requires ...
- Spring 4.3.11.RELEASE文档阅读(二):Core Technologies_IOC
在看这部分内容的时候,想了一些问题: 容器: 1,什么是容器 用来包装或装载物品的贮存器 2,容器能做什么 包装或装载物品 3,为什么需要容器 为什么要使用集装箱?如果没有容器会是什么样? 4,常见的 ...
- Linux问题故障定位
CPU 针对应用程序,通常关注的是内核CPU调度器功能和性能. 线程的状态分析主要是分析线程的时间用在什么地方,而线程状态的分类一般分为: a. on-CPU:执行中,执行中的时间通常又分为用户态时间 ...
- HDU——1303Doubles(水题,试手二分查找)
Doubles Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Su ...
- iOS-BMK标注&覆盖物
在iOS开发中,地图算是一个比较重要的模块.我们常用的地图有高德地图,百度地图,谷歌地图,对于中国而言,苹果公司已经不再使用谷歌地图,官方使用的是高德地图.下面将讲述一下百度地图开发过程中的一些小的知 ...
- 【CF20C】Dijkstra?(DIJKSTRA+HEAP)
没什么可以说的 做dijk+heap模板吧 以后考试时候看情况选择SFPA和DIJKSTRA ; ..]of longint; dis:..]of int64; a:..]of int64; b:.. ...
- POJ 2411Mondriaan's Dream
题目: Squares and rectangles fascinated the famous Dutch painter Piet Mondriaan. One night, after prod ...
- 优先队列priority_queue的使用
优先队列是队列的一种,不过它可以按照自定义的一种方式(数据的优先级)来对队列中的数据进行动态的排序. 每次的push和pop操作,队列都会动态的调整,以达到我们预期的方式来存储.例如:我们常用的操作就 ...
- Powershell简介及其编程访问
Powershell是下一代的命令行外壳程序,较之于它的前身(cmd.exe),它的功能更加强大,也更加易用.最根本的区别在于它是基于对象的操作(基于.NET Framework),而不是基于字符串的 ...
- SD-WAN用户实践分享:老网工趟出的SD-WAN成功路
在这个离开“人大物云”(人-人工智能.大-大数据.物-物联网.云-云计算)话题都张不开嘴的年代,在这个在咖啡店谈生意都不好意思低于1个亿的年代,反思我的老本行——网络,正在以一种全新的.更加重要的姿态 ...