原文链接:https://golang.org/doc/effective_go.html

Introduction

  Go是一种新兴的编程语言。虽然它借鉴了现有语言的思想,但它具有不同寻常的特性,使得高效的Go程序与其他语言编写的程序大不相同。将C ++或Java程序直接转换为Go不太可能产生令人满意的结果 - Java程序是用Java编写的,而不是Go。另一方面,从Go语言的角度思考问题可能会产生一个成功但完全不同的程序。换句话说,要写好Go,了解它的特性和语法是很重要的。了解Go中编程的既定约定也很重要,例如命名,格式化,程序构造等,这样你编写的程序将很容易让其他Go程序员理解。

  该文档提供了编写清晰,常用的Go代码的技巧。 Language specificationTour of GoHow to Write Go Code,这些都应该先阅读。

Formatting(格式化)

  格式化问题是最具争议性但最不重要的问题。人们可以适应不同的格式化风格,但如果不是勉强去适应代码风格,那就更好了,如果每个人都遵循相同的风格,那么关注在格式化上的时间就会减少。问题在于如何能够长期在没有规定风格的情况下达到这个理想的情况。

  使用Go,我们采取了一种不寻常的方法,让机器处理大多数格式问题。gofmt程序(也可作为go fmt,在包级别而不是源文件级别运行)读取Go程序并以标准样式的缩进和垂直对齐方式格式化源代码,并在必要时重新格式化注释。如果你想知道如何处理一些新的布局情况,请运行gofmt;如果结果似乎不正确,重新整理你的程序(或提交有关gofmt的错误),不必纠结于此。

  例如,没有必要花时间排列结构体中字段的注释。Gofmt会去做的。给出结构体的声明:

type T struct {
name string // name of the object
value int // its value
}

  gofmt会格式化为:

type T struct {
name string // name of the object
value int // its value
}

  标准包中的所有Go代码都已经使用gofmt格式化过了。一些格式细节仍然存在,非常简短:

  1. 缩进:我们使用tab进行缩进,gofmt默认使用的就是tab。仅在必要时使用空格。
  2. 每行的长度:Go中对每行的长度没有限制,别担心打孔卡不够长。如果一行实在太长,可以换行然后使用tab进行缩进。
  3. 括号:Go中的括号要比C和Java少,控制结构(if,for,switch)的语法中没有括号。此外,运算符优先级层次更短更清晰,因此在x<<8 + y<<16中间距说明了优先级,这与其他语言是不同的。

Commentary(注释)

  Go中支持C语言风格的/* */分段注释和C++风格的//行注释。通常使用的是行注释;段注释主要用在package的注释,但在表达式中或禁用大量代码时很有用。

  程序和Web服务器-godoc处理Go源文件以提取有关package内容的文档。出现在声明之前的注释(注释与声明之间没有插入新的行)将与声明一起提取,作为项目的解释性文本。这些注释的风格决定了godoc产生文档的质量。

  每个package在最开始都应该有一个段注释。对于多文件package,package注释只需要写在一个文件中,任何一个都可以。package的注释应该介绍package,并提供与整个package相关的信息。它将首先出现在godoc页面上,应该建立如下所示的详细文档。

/*
Package regexp implements a simple library for regular expressions. The syntax of the regular expressions accepted is: regexp:
concatenation { '|' concatenation }
concatenation:
{ closure }
closure:
term [ '*' | '+' | '?' ]
term:
'^'
'$'
'.'
character
'[' [ '^' ] character-ranges ']'
'(' regexp ')'
*/
package regexp

  如果package很简单,那么package的注释可以很简短。

// Package path implements utility routines for
// manipulating slash-separated filename paths.

  

Names(命名)

Semicolons(分号)

Effective Go中文版(更新中)的更多相关文章

  1. Effective C#中文版

    我看的书是<Effective C#中文版——改善C#程序的50种方法>,Bill Wagner著,李建忠译.书比较老了,04年写的,主要针对C#1.0,但我相信其中的观点现在仍有价值.( ...

  2. 容器使用的12条军规——《Effective+STL中文版》试读

    容器使用的12条军规——<Effective+STL中文版>试读     还 记的自己早年在学校学习c++的时候,老师根本就没有讲STL,导致了自己后来跟人说 起会C++的时候总是被鄙视, ...

  3. Effective STL中文版 译序

    <Effective STL中文版>译序 就像本书的前两本姊妹作(Effective C++.More Effective C++)一样,本书的侧重点仍然在于提升读者的经验,只不过这次将焦 ...

  4. 《Effective STL中文版》前言

    <Effective STL中文版>前言     我第一次写关于STL(Standard Template Library,标准模板库)的介绍是在1995 年,当时我在More Effec ...

  5. Effective STL 中文版(大全)

    Effective STL 中文版(大全) 作者:winter 候捷说,对于STL,程序员有三个境界,开始是使用STL,然后是理解STL,最后是补充STL.Effective STL是一本非常好的书, ...

  6. 《Effective Java中文版第二版》读书笔记

    说明 这里是阅读<Effective Java中文版第二版>的读书笔记,这里会记录一些个人感觉稍微有些重要的内容,方便以后查阅,可能会因为个人实力原因导致理解有误,若有发现欢迎指出.一些个 ...

  7. GitHub 上优秀的开源SLAM repo (更新中)

    GitHub 上优秀的开源SLAM repo (更新中) 欢迎 watch/star/fork 我们的 GitHub 仓库: Awesome-SLAM, 或者follow 项目的主页:Awesome- ...

  8. 在UPDATE中更新TOP条数据以及UPDATE更新中使用ORDER BY

    正常查询语句中TOP的运用: SELECT TOP 1000 * FROM MP_MemberGrade   随意更新一张表中满足条件的前N条数据: UPDATE TOP (1) MP_Member ...

  9. git常用命令(持续更新中)

    git常用命令(持续更新中) 本地仓库操作git int                                 初始化本地仓库git add .                       ...

  10. Atom使用记录(持续更新中)

    部分内容取自:http://www.jianshu.com/p/dd97cbb3c22d,我自己也在使用,持续更新中 Atom安装插件在窗口中File---Setting---install 在里面进 ...

随机推荐

  1. 【Linux_Shell 脚本编程学习笔记五、Oracle JDK1.8 安装shell 脚本】

    脚本使用说明: 首先在脚本的同级目录下有个 jdk的安装包 脚本和安装包必须在同级目录下才能够安装(脚本没有优化,还可以使用  wget  从网上下载指定版本的  jdk 安装包) #!/bin/sh ...

  2. 接口测试时返回的响应报json错误

    问题: 测试接口时,传入错误数据,最开始对于错误数据也返回了json数据的响应:后来传入错误数据,接口突然就没有返回json数据,通过在出错的代码之前进行打印,发现接口报500了 检查错误的方法1:在 ...

  3. 吴裕雄--天生自然python学习笔记:网页解析

    抓取万水书苑网页中所有<a>标签中的超链接井显示. import requests from bs4 import BeautifulSoup url = 'http://www.wsbo ...

  4. windows下apache运行环境搭建

    apache的安装 要求: 1,不要安装到有中文的目录中: 2,尽量将apache,php,mysql安装到一个总的目录,便于管理.(如都建立在amp目录下,然后在该目录下分别建立apache,php ...

  5. php--0与空的判断

    使用empty()函数判断,两者都是true $a=0; if(trim($a)=="") { echo '数字0'; }

  6. 如何为MyEclipse添加XML文档所使用的DTD

    1.打开MyEclipse,找到菜单栏"Window"---->"Preferences(首选项)": 2.在左侧导航菜单栏找到"MyEclip ...

  7. Windows下使用swoole的环境搭建

    Cygwin 官方地址:http://www.cygwin.com/ swoole 官方下载地址:https://github.com/swoole/swoole-src/releases 方法/步骤 ...

  8. java MVC 自定义类型转换器(Formatter、AnnotationFormatterFactory)

    下面一个事例,是将传入的一个身份证号,转换成一个对象(提取身份证号的地址.出身日期.性别等) 实体类 Person 有三个字段如下: String province; //地址 Date birthd ...

  9. win7图片只显示图标不显示预览图解决方案

    问题描述: win7上图片只显示图标,不显示缩略图:不管是调节小图.中图还是大图或者其他均不显示:而且这种情况下使用截图工具截下来的图片都不自动带上扩展名:情况如下图: 解决方案: 打开计算机-> ...

  10. js 网页运行原理

    当我们打开一个网页的时候,浏览器会首先创建一个窗口,这个窗口就是我所知道的window对象,也就是整个Javascript运行所依附的全局变量. 为了加载网页文档,当前窗口又需要创建一个Documen ...