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

Introduction

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

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

Formatting(格式化)

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

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

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

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

  gofmt会格式化为:

type T struct {name    string // name of the objectvalue   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(分号)

转载于:https://www.cnblogs.com/Moon-Light-Dream/p/10241940.html

Effective Go中文版(更新中)相关推荐

  1. Effective C++ 中文版(第三版)读书笔记 更新ing~

    Effective C++ 中文版(第三版)持续更新ing 让自己习惯C++ 条款1 视c++为一个联邦 条款2 尽量以const,enum,inline替换#define 条款3 尽可能使用cons ...

  2. 读《Effective java 中文版》(2)

    FROM 竹笋炒肉 http://hedong.3322.org/ 读<Effective java 中文版>(2) 第10条:谨慎地改写clone Cloneable接口的目的是作为对象 ...

  3. 竹笋炒肉转载 -- 读《Effective java 中文版》(2)

    FROM 竹笋炒肉 http://hedong.3322.org/ 读<Effective java 中文版>(11) 第10条:谨慎地改写clone Cloneable接口的目的是作为对 ...

  4. Android知识点及资料汇总(不断更新中)

    /// //版本:0.1 //主要内容:根据思维导图的知识点,对之前收藏夹的内容进行分类. /// 之前转载过一篇题目为<一张思维导图,告诉你Android新手如何快速入门>的文章,这篇文 ...

  5. C++学习资源汇总(持续更新中)

    以下收集汇总一些C++的学习资料(持续更新中) 网站和论坛: http://www.csdn.net/ http://www.iteye.com/ http://www.bccn.net/  编程中国 ...

  6. 《Effective C#中文版:改善C#程序的50种方法》简介

    书名: Effective C#中文版:改善C#程序的50种方法 书号: 978-7-115-15888-8/TP 原书名: Effective C#: 50 Specific Ways to Imp ...

  7. Head First 系列图书资源-PDF网盘下载(更新中)

    Head First 系列图书资源-PDF网盘下载(更新中) <Head First Python 中文版>.pdf: https://u21476951.ctfile.com/fs/21 ...

  8. 找软件完全安装手册——【19年3月】各行业软件大全\系统安装、系统装机、软件安装、各种完全手册更新中(来自第一设计群)

    找软件完全安装手册--[各行业软件大全\系统安装.系统装机.软件安装.各种完全手册更新中(来自第一设计群) 各类软件安装包.安装手册(新手点我进入下载指南) 大菜单(完全卸载清理各种软件.回复本公众号 ...

  9. 2022年顶会、顶刊SNN相关论文----------持续更新中

    原文链接:https://blog.csdn.net/qq_43622216/article/details/124163883 2022年顶会.顶刊SNN相关论文 目录 说明 AAAI2022(共7 ...

  10. Effective STL中文版:50条有效使用STL的经验(双色)

    <Effective STL中文版:50条有效使用STL的经验(双色)> 基本信息 作者: (美)梅耶(Meyers,S.) 译者: 潘爱民 陈铭 邹开红 出版社:电子工业出版社 ISBN ...

最新文章

  1. 转--Android如何在java代码中设置margin
  2. 在Hibernate中处理批量更新和批量删除
  3. 转 The connection to adb is down, and a severe error
  4. 数据挖掘过程中:数据预处理
  5. em算法怎么对应原有分类_机器学习系列之EM算法
  6. 本博客弃用,请移步http://ningios.com查看最新
  7. 幸福秘诀 男女必须要看哦
  8. 区块链教程(二):基础概念介绍
  9. CentOS 下使用yum 命令安装MySQL
  10. Python之 range()函数✅
  11. mysql实战27 | 主库出问题了,从库怎么办?
  12. 决策树算法 (CART分类树)
  13. 51ditu、清华地图以及Google地图
  14. 你知道创业公司股权分配的法律思维吗?
  15. 超级详细的计数问题的解法
  16. STM32 嵌入式学习入门(4)——PWM原理
  17. lg分屏软件支持linux吗,LG显示器分屏软件-OnScreen Control(快速分屏)下载v2.95-领航下载站...
  18. 门禁接入动环系统,门磁接入动环系统怎么设置
  19. 淘宝UED设计流程理解
  20. 大学毕业设计这样做可以吗

热门文章

  1. geth+remix+metamask 实现私有链智能合约部署
  2. Cocos2d-x学习之---关于CCScrollView
  3. IntelliJ IDEA2017 java连接mysql数据库并查询数据
  4. PostgreSQL 9.5.3中文手册正式发布(附pdf和chm)
  5. ubuntu16.4安装部署过程
  6. 对中级Linux用户有用的20个命令
  7. 学习Vim 全图解释
  8. ubuntu command
  9. .NET中的DES对称加密
  10. 病毒——隐藏鸟 系统文件夹不见了