无我编程的十大戒律最早出现在 1971 年 Gerald Weinberg 出版的《 程序开发心理学 》里。后由 Stack Overflow 网站的联合创始人 Jeff Atwood 在博客中整理列出。虽然过去了几十年,但这些经典原则仍值得每一位程序员拜读。 1、理解并接受自己会犯错的事实 – 犯错无法避免,关键要在错误进入生成环境前及时找出。幸好除了一小部分需要在 JPL(喷气推进实验室)开发火箭指导软件的程序员外,大部分程序员都不会因错误招致生命危险。所以我们要从错误中学习,改过并继续前行。 2、公正地处理代码 – 要记住,代码审查是为了找出问题,并且最终一定会发现问题所在。不要因为代码中的某一错误而对人产生偏见。 3、山外有山,人外有人 – 不管你怀揣了多少“秘笈”,都不要低估了别人的水平。只要你愿意开口请教,一定会有人教你你所不知道的东西。当你认为某件事没有必要做的时候,不凡问问他人的建议。 4、不在没有协商的情况下重写代码 – “修复代码”和“重写代码”有明显的区别。要了解它们之间的差异,并在代码审查的框架内进行程式化的变更,而不是孤军奋战。 5、尊重求教者,并耐心待之 – 与技术人员打过交道的非技术人员通常会认为:这些专业人士虽技术知识过硬,但妄自尊大。因此,我们要用耐心和谦和来消除他们对技术人员的误解。 6、世界唯一的不变就是改变 – 对世界敞开胸怀,微笑着拥抱变化。把每次需求、平台或者工具的变化看做是一次挑战,而不是一堆麻烦。 7、真正的权威来源于才能,而非职位 –… 

package main import ( "fmt" "strings" ) func main() { fmt.Println("查找子串是否在指定的字符串中") fmt.Println("1 Contains 函数的用法") fmt.Println(strings.Contains("seafood", "foo")) //true fmt.Println(strings.Contains("seafood", "bar")) //false fmt.Println(strings.Contains("seafood", "")) //true fmt.Println(strings.Contains("", "")) //true 这里要特别注意 fmt.Println(strings.Contains("我是中国人", "我")) //true fmt.Println("") fmt.Println("2 ContainsAny 函数的用法") fmt.Println(strings.ContainsAny("team",… 

Buffers are extremely useful in Go and I’ve written a little about them before. Part of that has been around rendering HTML templates: ExecuteTemplate returns an error, but if you’ve passed it your http.ResponseWriter it’s… 

Go currently (pre 1.5) doesn’t provide any built in method for vendoring packages. The tools that currently exist today (godep, nut and a few others) basically exploit the implementation details of $GOPATH. Go 1.5 however…