Go 入门指南(The way to Go)nel) 18.9 网络和网页应用 18.10 其他 18.11 出于性能考虑的最佳实践和建议 - 6 - 本文档使用 书栈(BookStack.CN) 构建 致谢 当前文档 《Go入门指南》 由 进击的皇虫 使用 书栈(BookStack.CN) 进行构建,生成于 2018-02-08。 书栈(BookStack.CN) 仅提供文档编写、整理、归类等功能,以及对文档内容的生成和导出工具。 Go 语言版本进行修改而不作出特别声明。 该翻译版本已获得原作者(Ivo Balbaert)本人授权,并表示支持开源事业的发展! 14.9 实现 Futures 模式 如果你喜欢本书 《Go入门指南》,你可以参与到本书的翻译或纠正工作中来,具体请联系【无闻 E-mail: u#gogs.io】,一同完善本书并帮助壮大 Go 语言在国内的学习群体,给大家提供更好的学习资源。 参见 Go 语言学习资料与社区索引。 的问题最好不要发问 本书原作者:Ivo Balbaert 参与翻译人员: @zhanming themorecolor @everyx @chidouhu @spawnris 《Go入门指南》 翻译进度 支持本书 交流社区 新人守则 致谢 阅前必读 - 8 - 本文档使用 书栈(BookStack.CN) 构建 @domainname @leisore @dake0 码力 | 466 页 | 4.44 MB | 1 年前3
Go 入门指南(The way to Go)这类语言的高性能和安全性。 Go 语言出现的目的是希望在编程领域创造最实用的方式来进行软件开发。它并不是要用奇怪的语法和晦 涩难懂的概念来从根本上推翻已有的编程语言,而是建立并改善了 C、Java、C# 中的许多语法风格。它提 倡通过接口来针对面向对象编程,通过 goroutine 和 channel 来支持并发和并行编程。 这本书是为那些想要学习 Go 这门全新的,迷人的和充满希望的编程语言的开发者量身定做的。当然,你 和一些编程语言的相关概念进 行比较(书中会使用大家所熟知的缩写 “OO” 来表示面向对象)。 本书将会从最基础的概念讲起,同时也会讨论一些类似在应用 goroutine 和 channel 时有多少种不同的模 Go入门指南 - 1 - 本文档使用 看云 构建 式,如何在 Go 语言中使用谷歌 API,如何操作内存,如何在 Go 语言中进行程序测试和如何使用模板来 开发 Web 应用这些高级概念和技巧。 在本书的第一部分,我们将会讨论 念或者技巧来解释相关的代码示例,以避免你在不了 解某些高级概念的情况下而感到迷茫。 我们通过 227 个完整的代码示例和书中的解释说明来对所有涉及到的概念和技巧进行彻底的讲解,你可以 Go入门指南 - 2 - 本文档使用 看云 构建 下载这些代码到你的电脑上运行,从而加深对概念的理解。 本书会尽可能地将前后章节的内容联系起来,当然这也同时要求你通过学习不同的知识来对一个问题提出 尽可0 码力 | 380 页 | 2.97 MB | 1 年前3
Go Web编程Go是一种新的语言,一种并发的、带垃圾回收的、快速编译的语言。它具有以下特点: 它可以在一台计算机上用几秒钟的时间编译一个大型的Go程序。 Go为软件构造提供了一种模型,它使依赖分析更加容易,且避免了大部分C风格include文件与库的开头。 Go是静态类型的语言,它的类型系统没有层级。因此用户不需要在定义类型之间的关系上花费时间,这样感 觉起来比典型的面向对象语言更轻量级。 Go完全是垃圾回收型的语言,并为并发执行与通信提供了基本的支持。 https://code.google.com/p/go cd go/src ./all.bash 运行all.bash后出现"ALL TESTS PASSED"字样时才算安装成功。 上面是Unix风格的命令,Windows下的安装方式类似,只不过是运行all.bat,调用的编译器是MinGW的gcc。 然后设置几个环境变量, export GOROOT=$HOME/go export GOBIN=$GOROOT/bin 系统相关的, 但是对于源码管理来说没必要 go fmt go fmt 有过C/C++经验的读者会知道,一些人经常为代码采取K&R风格还是ANSI风格而争论不休。在go中,代码则有标准的风 格。由于之前已经有的一些习惯或其它的原因我们常将代码写成ANSI风格或者其它更合适自己的格式,这将为人们在 阅读别人的代码时添加不必要的负担,所以go强制了代码格式(比如左大括号必须放在行尾),不按照此格式的代码0 码力 | 295 页 | 5.91 MB | 1 年前3
Go语言基础
Golang Fundaments面向包的设计(Package-Oriented Design) • 并发软件设计(Concurrent Software Design) • 管道设计(Channel Design) Golang-设计哲学 • 实用主义的语言风格 – 面向编译器的静态类型语言 • 数据类型必须在编译阶段确定 • 语言能充分发挥编译优化技术 – 复古且简便的语言 • 集合了多种语言实用的语法表示 • 函数是一等公民(First-Class 包函数 adder 隶属应用程序栈 – adder 返回的函数隶属 adder 执行时创建在堆中的栈 – 返回函数访问隶属函数实例的变量称为“闭包” Go语言入门资源 • 语言概览 – 官方Go指南,gotour – 系统的学习,go语言教程 • 程序结构 – 包/子包(main) • Go源代码 – 函数(main, init) • 命令行工具 • 编程参考与规范 – 官方文档”Effective0 码力 | 21 页 | 851.30 KB | 1 年前3
2.1 gofmt 的文化演变规范的价值在于:整齐划一,而不是完美 4/21/2015 gofmt 的文化演变 http://127.0.0.1:3999/gofmt-cn.slide#1 6/34 好的格式美化器的问题 当越多人思考他们自己的格式风格的时候,他们就变得更加固执于此了 错误的结论:自动格式器必须要有很多选项! 但是有很多选项的格式器其实违背他们的目的 此外,支持很多选项是难的 尊重用户的想法是最关键的 处理注释是很难的 大家的反应 Go 项目要求所有提交的源代码都用 gofmt 的格式。 一开始,大家都抱怨:`gofmt` 不知道怎样格式成我的风格! 慢慢地,大家不作声了:Go 项目组一定要用 gofmt! 最后,大家看清了:gofmt 不是任何人的风格,但所有人都喜欢 gofmt 的风格。 现在,大家都赞扬: gofmt 是大家喜欢 Go 的一个原因。 现在,格式已经不是一个问题。 4/21/2015 gofmt0 码力 | 34 页 | 9.97 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a将只会输出代 码语法错误。它们不会输出可能的代码逻辑错误(即警告)。 go vet子命令 可以用来检查可能的代码逻辑错误(即警告)。 我们可以(并且应该常常)使用go fmt子命令来用同一种代码风格格式化Go 代码。 我们可以使用go test子命令来运行单元和基准测试用例。 我们可以使用go doc子命令来(在终端中)查看Go代码库包的文档。 强烈推荐让你的Go项目支持Go模块特性来简化依赖管理。对一个支持Go模块 。 我们应该尽量使代码自解 释,只在确实需要解释的地方进行注释。 关于代码断行 像很多其它流行编程语言一样,Go也使用一对大括号{ and }来形成一个显式 代码块。但是在Go代码中,编码样式风格有一些限制。 比如,很多左大括号 {不能被放到下一行。 如果,上面的StatRandomNumbers被修改成如下所示, 则上面的示例程序将编译不通过。 1| func StatRandomNumbers(numRands 13 | return a, b 14 | } 一些程序员不是很喜欢这些限制。但是这些限制有两个好处: 1. 它们使得Go程序编译得非常快。 2. 它们使得不同的Go程序员编写的代码风格类似,从而一个Go程序员写的 代码很容易被另一个程序员看懂。 我们可以阅读代码断行规则(第28章)一文以获取更多关于代码换行规则的细 节。在目前,我们最好避免将左大括号放在下一行。 或者说,每行的非空起0 码力 | 821 页 | 956.82 KB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.ainstall) 将只会输出代码 语法错误。它们不会输出可能的代码逻辑错误(即警告)。 go vet子命令可以 用来检查可能的代码逻辑错误(即警告)。 我们可以(并且应该常常)使用go fmt子命令来用同一种代码风格格式化Go代 码。 我们可以使用go test子命令来运行单元和基准测试用例。 我们可以使用go doc子命令来(在终端中)查看Go代码库包的文档。 强烈推荐让你的Go项目支持Go模块特性来简化依赖管理。对一个支持Go模块 多是为了Go初学者快速理解的目的而加入的。 我们应该尽量使代码自解释,只 在确实需要解释的地方进行注释。 关于代码断行 像很多其它流行编程语言一样,Go也使用一对大括号{ and }来形成一个显式代 码块。但是在Go代码中,编码样式风格有一些限制。 比如,很多左大括号{不 能被放到下一行。 如果,上面的StatRandomNumbers被修改成如下所示,则上面 的示例程序将编译不通过。 func StatRandomNumbers(numRands } } return a, b } 一些程序员不是很喜欢这些限制。但是这些限制有两个好处: 1. 它们使得Go程序编译得非常快。 2. 它们使得不同的Go程序员编写的代码风格类似,从而一个Go程序员写的代 码很容易被另一个程序员看懂。 我们可以阅读代码断行规则(第28章)一文以获取更多关于代码换行规则的细 节。在目前,我们最好避免将左大括号放在下一行。 或者说,每行的非空起始0 码力 | 608 页 | 1.08 MB | 1 年前3
Golang 101(Go语言101 中文版) v1.21.a将只会输出代 码语法错误。它们不会输出可能的代码逻辑错误(即警告)。 go vet子命令可以 用来检查可能的代码逻辑错误(即警告)。 我们可以(并且应该常常)使用go fmt子命令来用同一种代码风格格式化Go代码。 我们可以使用go test子命令来运行单元和基准测试用例。 我们可以使用go doc子命令来(在终端中)查看Go代码库包的文档。 强烈推荐让你的Go项目支持Go模块特性来简化依赖管理。对一个支持Go模块特性的 为了Go初学者快速理解的目的而加入的。 我们应该尽量使代码自解释,只在确实需 要解释的地方进行注释。 关于代码断行 像很多其它流行编程语言一样,Go也使用一对大括号{ and }来形成一个显式代码 块。但是在Go代码中,编码样式风格有一些限制。 比如,很多左大括号{不能被放 到下一行。 如果,上面的StatRandomNumbers被修改成如下所示,则上面的示例 程序将编译不通过。 1| func StatRandomNumbers(numRands 14| } 第4章:程序源代码基本元素介绍 19 一些程序员不是很喜欢这些限制。但是这些限制有两个好处: 1. 它们使得Go程序编译得非常快。 2. 它们使得不同的Go程序员编写的代码风格类似,从而一个Go程序员写的代码很 容易被另一个程序员看懂。 我们可以阅读代码断行规则(第28章)一文以获取更多关于代码换行规则的细节。 在目前,我们最好避免将左大括号放在下一行。 或者说,每行的非空起始字符不能0 码力 | 591 页 | 21.40 MB | 1 年前3
Go读书会第二期go 社区的优秀项目和代 码,看看他们怎么做的 践行哲学,遵循惯例,认清本质,理解原理 Part2 – 项目基础:布局、代码风格与命名 践行哲学,遵循惯例,认清本质,理解原理 每个 gopher 在开启一个 go 项目时都要考虑的事情 • Go 项目布局 • 代码风格 • 命名惯例 Part3 – 语法基础:声明、类型、语句与控制结构 践行哲学,遵循惯例,认清本质,理解原理 • 一致的变量声明形式0 码力 | 26 页 | 4.55 MB | 1 年前3
Go vs. GoPlus(Go+)-最少特性原则 -如果一个功能不对解决任何问题有显著价值,那么就不提供 惊喜2:最对胃口的并行支持 • 我的并行编程历程 -Erlang -CERL 1.0 (Erlang 风格并行的模仿) -CERL 2.0 (对 Erlang 风格并行的修正) • 后来发现,CERL 2.0 的并行编程理念,与 Go 完全一致(雏形版的 Go) -Go 语言 • 参考资料 -ECUG 2011 讲座 • 《从Erlang0 码力 | 54 页 | 1.82 MB | 1 年前3
共 18 条
- 1
- 2













