Effective Go中文版(更新中)

原文链接: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(注释)

Names(命名)

Semicolons(分号)

原文地址:https://www.cnblogs.com/Moon-Light-Dream/p/10241940.html

时间: 2024-11-06 12:55:01

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

JAVA读书推荐----《深入分析Java Web技术内幕》--《java多线程编程核心技术》--《大型网站技术架构 核心原理与案例分析》-《Effective Java中文版》

(1)  首先推荐的不是一本书,而是一个博客,也是我们博客园另外一位博友java_my_life. 目前市面上讲解设计模式的书很多,虽然我前面讲了看书是最好的,但是对设计模式感兴趣的朋友们,我推荐的是这个博客.这位博友的设计模式讲得非常非常好,我认为90%的内容都是没有问题且很值得学习的,其讲解设计模式的大体路线是: 1.随便开篇点明该设计模式的定义 2.图文并茂讲解该设计模式中的结构 3.以详细的代码形式写一下该种设计模式的实现 4.补充内容 5.讲解该设计模式的优缺点 对于一个设计模式我们关

Effective STL 中文版(大全)

Effective STL 中文版(大全) 作者:winter 候捷说,对于STL,程序员有三个境界,开始是使用STL,然后是理解STL,最后是补充STL.Effective STL是一本非常好的书,帮助你更好的理解STL,其作者就是<Effective C++>一书的作者.如果你已经初步了解了STL的容器.迭代器.算法和函数,而又想更好的了解STL,那么<Effective STL>是你的最佳选择. 还有一部分没有找到链接,如果再找不到我会自己试着翻译一下:) 前言 容器 条款1

【电子书】Effective Java中文版下载

下载地址: 点击打开链接 (需要资源0分的联系我~) <Effective Java中文版(第2版)>主要内容:在Java编程中78条极具实用价值的经验规则,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案.通过对Java平台设计专家所使用的技术的全面描述,揭示了应该做什么,不应该做什么才能产生清晰.健壮和高效的代码.第2版反映了Java 5中最重要的变化,并删去了过时的内容. <Effective Java中文版(第2版)>中的每条规则都以简短.独立的小文章形式出现,并

【人人为我,我为人人】大量免费电子书持续更新中,2014年8月29日更新

计算机相关 ASP.NET+MVC+4+框架揭秘.pdf ASP.NET从入门到精通.pdf ASP.NET从入门到精通1.pdf AngularJS开发下一代Web应用.pdf C#入门经典(第5版).pdf C#高级编程(中文第七版).pdf C++ Primer.pdf Git权威指南.pdf HTML5与CSS3权威指南(完整版).pdf HTTP协议(RFC2616)中文版.pdf JS权威指南(第四版)教程.pdf LINUX SHELL脚本攻略(中文版带书签).pdf More E

Effective Java中文版第2版

在Java编程中78条极具实用价值的经验规则,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案.通过对Java平台设计专家所使用的技术的全面描述,揭示了应该做什么,不应该做什么才能产生清晰.健壮和高效的代码.第2版反映了Java 5中重要的变化,并删去了过时的内容. <Effective Java中文版(第2版)>中的每条规则都以简短.独立的小文章形式出现,并通过示例代码加以进一步说明.<Effective Java中文版(第2版)>的内容包括:全新的泛型.枚举.注解.自

Java 《Effective Java 中文版 第2版》学习笔记 遇到多个构造器时要考虑用构建器

静态工厂和构造器有个共同的局限性:它们都不能很好地扩展到大量的可选参数. 当一个类中有若干个必选属性和多个可选属性时,采用重叠构造器模式.JavaBeans模式或者Builder模式,但各有优劣. 当有很多参数的时候,重叠构造器模式下客户端代码会很难编写,并且仍然较难以阅读. JavaBeans模式调用一个无参构造器来创建对象,然后调用setter方法来设置每个必要的参数,以及每个相关的可选参数.因为构造过程被分到了几个调用中,在构造过程中JavaBean可能处于不一致的状态.与此相关的另一点不

Effective C#中文版

我看的书是<Effective C#中文版--改善C#程序的50种方法>,Bill Wagner著,李建忠译.书比较老了,04年写的,主要针对C#1.0,但我相信其中的观点现在仍有价值.(平心而论,和Effective C++有差距,毕竟该书成书时对C#的研究不过几年.) 下面是对这本书条款内容的一些归纳和个人理解,由于我比较熟悉C++,因此也会有也一些C++的对比. 第一章 C#语言元素 条款1:使用属性代替可访问的数据成员 1. 属性具有数据成员的访问语法,这是最易于使用的语法. 2. 属

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

说明 这里是阅读<Effective Java中文版第二版>的读书笔记,这里会记录一些个人感觉稍微有些重要的内容,方便以后查阅,可能会因为个人实力原因导致理解有误,若有发现欢迎指出.一些个人还不理解的会用斜线标注. 第一章是引言,所以跳过. 第二章 创建和销毁对象 第1条:考虑用静态工厂方法代替构造器 含义 静态工厂方法是指一个返回类的实例的静态方法,例如: public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE :

《Effective java 中文版》(第2版)分享下载

书籍信息 书名:<Effective java 中文版>(第2版) 原作名: Effective Java Second Edition 作者: [美] Joshua Bloch 豆瓣评分:9.1分 内容简介 本书介绍了在Java编程中78条极具实用价值的经验规则,这些经验规则涵盖了大多数开发人员每天所面临的问题的解决方案.通过对Java平台设计专家所使用的技术的全面描述,揭示了应该做什么,不应该做什么才能产生清晰.健壮和高效的代码. 本书中的每条规则都以简短.独立的小文章形式出现,并通过例子

linux学习资料持续更新中

一.LINUX基础教程 1.老男孩系列免费视频: 1) linux高薪入门实战视频教程(第二部)老男孩linux教程 http://edu.51cto.com/course/course_id-1035-page-1.html 2) 跟着老男孩从0开始一步步实战深入学习linux运维(三) http://edu.51cto.com/lesson/id-11909.html linux学习资料持续更新中,布布扣,bubuko.com