
目前正在学习Go语言,决定翻译《Programming in Go》,有兴趣的可以去亚马逊购买实体书。如果发现本翻译中有错误的地方,欢迎留言指正,不胜感激。有链接的目录说明翻译已经完成。
引言
本书的目的是讲授如何使用Go语言的所有特性和标准库中常用的包来进行地道的Go语言编程。本书同时也被设计成在学习Go语言后有用的参考资料。为了实现这两个目标,本书知识相当全面并尽量保证每一章只涵盖一个主题–各章之间会进行前后交叉引用。
2012年冬,我在一家创业公司的小团队里搞软件开发。彼时我们有一位真实的企业客户,且软件的第一版也已发布。开发按进度完工,在发布时我欣喜若狂,也非常骄傲,看着系统服务于每天几百万的独立用户,并发送出数千万条短信真是太令人满意了。到了第二年夏天,公司拿到了真实收入,我的职位变成了开发主管,公司又招了些新人,正待蓬勃发展,一切都很美好。然后我们做了一个巨大的决策失误:决定重写软件——从头开始。
Go语言支持两种类型的注释,与C++的一样。行注释以//开始,以换行符结束;它们被简单当做一个换行符。块注释以/*开头,以*/结尾,可能包含多个行。如果块注释只占用了一行(如/*line comment*/),它被当做一个空格对待,如果该块注释占用了多行,它就被当做一个换行符对待。(我们将在第5章看到,换行符在Go语言中非常重要。)
最近这几年在世界各地突然吹起了一股全民写程序的风潮,连美国总统欧巴马都在写 JavaScript 了,但是身为一介靠写程序(以及在上班时间胡乱上网)来谋生的 developer(所谓的 developer 就是「软件工程师」的比较潮的说法),想要提醒那些想学习写程序的人一件重要的事:慎选你的第一个程序语言。
有时候程序员们需要写一段独立于位置操作的代码,可当作一段数据写到其他进程或者网络中去。该类型代码在它诞生之初就被称为shellcode,在软件利用中黑客们以此获取到shell权限。方法就是通过这样或那样的恶意手法使得这段代码得以执行,完成它的使命。当然了,该代码仅能靠它自己,作者无法使用现代软件开发的实践来推进shellcode的编写。
go语言开发之解压rar、zip文件,这里使用了go的os/exec包,并没有使用go原生的解压特性,因为go还不支持rar文件的解压缩功能。当然前提是你的电脑已经安装了winrar或者7z等可以提供命令行解压文件的功能。
What’s the hardest bug you’ve debugged? It’s kind of painful to re-live this one. As a programmer, you learn to blame your code first, second, and third… and somewhere around 10,000th you blame the compiler. Well down the list after that, you blame the hardware.
MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字符串、对象等)所使用的key-value存储,数据可以来自数据库调用、API调用,或者页面渲染的结果。