写Go代码时遇到的那些问题[第3期]
我有一个习惯,那就是随时记录下编程过程中遇到的问题(包括问题现场、问题起因以及对问题的分析),并喜欢阶段性的对一段时间内的编码过程的得与失进行回顾和总结。内容可以包括:对编程语法的新认知、遇坑填坑的经历、一些让自己豁然开朗的小tip/小实践等。记录和总结的多了,感觉有价值的,就成文发在博客上的;一些小的点,或是还没有想清楚的事情,或思路没法结构化统一的,就放在资料库里备用。“写Go代码时遇到的那些问题”这个系列也是基于这个思路做的。 ...
我有一个习惯,那就是随时记录下编程过程中遇到的问题(包括问题现场、问题起因以及对问题的分析),并喜欢阶段性的对一段时间内的编码过程的得与失进行回顾和总结。内容可以包括:对编程语法的新认知、遇坑填坑的经历、一些让自己豁然开朗的小tip/小实践等。记录和总结的多了,感觉有价值的,就成文发在博客上的;一些小的点,或是还没有想清楚的事情,或思路没法结构化统一的,就放在资料库里备用。“写Go代码时遇到的那些问题”这个系列也是基于这个思路做的。 ...
一. 引子 书接上文,在发表了《对一段Go语言代码输出结果的简要分析》一文之后,原问题提出者又有了新问题,这是一个典型Gopher学习Go的历程,想必很多Gopher们,包括我自己都遇到过的。我们先来看看这段代码(来自原问题提出者): // https://play.golang.org/p/dOUFNj96EIQ package main import "fmt" func main() { var i int = 1 defer fmt.Println("result =>",func() int { return i * 2 }()) i++ } 这里显然有坑!初学者的常规逻辑一般是:defer是在main函数退出后执行,退出前i已经做了+1操作,值变成了2,这样一来defer后的Println应该输出:result => 4 才对!实际输出结果呢? ...
本文是首发于个人微信公众号的文章**“TB一周萃选[第7期]”**的归档。 我看过小马哥(哈维尔·马斯切拉诺)踢球, 你看过小马哥踢球, 他看过小马哥踢球。 我们看过小马哥踢球, 你们看过小马哥踢球, 他们看过小马哥踢球! ...
第1期的“写Go代码时遇到的那些问题”一经发布后得到了很多Gopher的支持和赞赏,这也是我继续写下去的动力!不过这里依然要强调的是这一系列文章反映的是笔者在实践中对代码编写的认知以及代码的演化过程。这里的代码也许只是“中间阶段”,并不是什么最优的结果,我记录的只是对问题、对代码的一个思考历程。不过,十分欢迎交流与批评指正。 一、dep的日常操作 虽然dep在国内使用依然有init失败率较高(因为一些qiang外的第三方package)的坎儿,但我和主流Gopher社区和项目一样,义无反顾地选择在代码库中使用dep。本周dep刚刚发布了0.4.1版本,与之前版本最大的不同在于dep发布了其官网以及相对完整的文档(以替代原先在github项目主页上的简陋的、格式较low的FAQ),这也是dep继续走向成熟的一个标志。不过关于dep何时能merge到go tools链当中,目前还是未知数。不过dep会在相当长的一段时期继续以独立工具的形式存在,直到merge到Go tools中并被广泛接受。 ...
本文是首发于个人微信公众号的文章**“TB一周萃选[第5期]”**的归档。 人生十鉴 大喜易失言 大怒易失礼 大惊易失态 大哀易失颜 大乐易失察 大惧易失节 大思易失爱 大醉易失德 大话易失信 大欲易失命 ...
Go语言之父,Google大神Rob Pike代表Go语言的另外两位缔造者Robert Griesemer和Ken Thompson在自己的博客上发表了一篇名为《Go: Ten years and climbing》的文章,用以纪念Go语言从最初的设计idea起到目前的十年发展。笔者读完后,也是深有感触,因此在这里粗略翻译一下全文,希望能有更多的程序员加入到Gopher行列中来。 ...
近期Go team的组员Jaana B. Dogan,网名:rakyll开源了一个小工具:Go Vanity URLs。这个小工具可以帮助你快速为你的Go package定制Go get的导入路径(同样也是package被使用时的import路径)。 ...
本文是公司“运营拍档”公众号的专访文稿,这里转载一下^0^。原文链接在这里。 十年生死两茫茫,白天忙,晚上忙,写程序,到天亮。千行代码,Bug何处藏。纵使上线又怎样,朝令改,夕断肠…… ...
本篇文章是我在2017年第三届GopherChina大会上所作talk:”Go coding in go way“的改编和展开版,全文如下。 一、序 今天我要分享的题目是**“Go coding in go way”,中文含义就是用“Go语言编程思维去写Go代码”**。看到这个题目大家不禁要问:究竟什么是Go语言编程思维呢?关于什么是Go语言变成思维其实并没有官方说法。这里要和大家交流的内容都是基于Go诞生七年多以来我个人对Go的设计者、Go team以及Go主流社区的观点和代码行为的整理、分析和总结。希望通过我的这次“抛砖引玉”,让在座的Gopher们对“Go语言编程思维”有一个初步的认知,并在日常开发工作中遵循Go语言的编程思维,写出idiomatic的Go代码。 ...
时光荏苒。2016年北京GopherChina大会的情形还历历在目,2017年上海GopherChina大会又如约而至。 一、印象 这是我连续第二年参加AstaXie组织举办的GopherChina大会。而且不同于去年的是,这次我是以讲师身份参与的。虽然大会地点不同,我的角色不同,但不变的是和广大Gophers一样的对Go语言的极大热情。 这也是第三届GopherChina大会。随着Go语言自身的快速演进以及Go在国内各个行业应用的快速增长,GopherChina大会在大中华区的影响力与日俱增:既得到了更多圈内赞助商的赞助,也得到了Gophers们的极大关注。有好多Gophers都是GopherChina大会的连续参加者,有些Gopher甚至连续参加了三届,我个人就看到了好多去年在北京大会上遇到的Gophers。这让能容纳近1500名观众的主会场又近乎爆满。举办和参加这样级别的技术大会,无论是对于主办方还是观众都是一种考验。索性的是,在谢大和相关工作人员的不懈努力之下,两天的大会举办的是很是成功,大会紧凑而有序。并且在第一天晚上举办的技术Party上,大胡子Dave Cheney还为我们带来了“Gopher puzzlers”。这让技术party的气氛一下达到了高潮。 ...