Go by Example 是一个通过带注释的示例程序学习 Go 语言的网站。网站包含了从简单的 Hello World 到高级特性 Goroutine、Channel 等一系列示例程序,并附带了注释说明,非常适合 Go 语言初学者。
如果您想学习 Go 语言基础知识,不要犹豫,请直接前往 Go by Example 开始学习!
如果您觉得本项目还不错的话,记得回来给个 Star 哦 o( ̄▽ ̄)ブ
如果你想了解 Go by Example 网站
是如何构建的,或者想为该项目贡献代码,请查看下面的内容:
本项目包含了网站的内容和构建工具链,网站使用的是 public
目录下静态文件(html 等文件)的内容。它是这样被构建出来的:通过 程序
提取 examples
目录下的源码及注释,并使用 templates
目录下的静态文件模板将其渲染为静态文件,最终将生成的静态文件输出到 public
目录下。
实现此构建过程的 程序
位于 tools
目录下,其相关的依赖库被放在了 vendor
目录下。构建得到的 public
目录下的静态文件(html 等文件),可以部署到任何支持静态内容的系统。例如 S3、CloudFront 以及任何 Web 服务器。
若想自行构建该网站,你需要安装 Go 和 Python。然后运行下面的命令:
$ go get github.com/russross/blackfriday
$ tools/build
$ open public/index.html
如果你使用了 GO MOD
,直接执行下面的命令即可:
$ tools/build
$ open public/index.html
若想实时渲染,请使用持续构建:
$ tools/build-loop
下面的例子展示了如何将网站上传至 AWS:
$ gem install aws-sdk
$ export AWS_ACCESS_KEY_ID=...
$ export AWS_SECRET_ACCESS_KEY=...
$ tools/upload
该项目的著作权归 Mark McGranaghan 所有,并遵循 CC BY-SA 3.0 协议。
Go Gopher 的版权归 Renée French 所有,并遵循 CC BY-SA 3.0 协议。
本项目只是 mmcgrana 的 Go by Example 项目的中文翻译。
除中文版外,该项目还有以下语言:
- English by mmcgrana/gobyexample(原版)
- Czech by martinkunc
- French by keirua
- Italian by the Go Italian community
- Japanese by spinute
- Korean by mingrammer
- Russian by badkaktus
- Spanish by the Go Mexico community
- Ukrainian by butuzov
感谢 Jeremy Ashkenas 的 Docco,启发了这个项目。
从这部分开始,后面的内容都是中文版的贡献者们给自己加的戏。
好吧,其实前面的内容也加了很多戏,没有完全根据英文版翻译。
如果你发现中文版的例子没有及时与英文版同步,或者你觉得某个例子翻译得不够好,甚至只是一个错误的文字、单词或符号,我们都 非常欢迎
你能够提交 pull request 以帮助我们使项目更完善,贡献流程大致如下:
- Fork 该仓库。
- 在
examples
目录下找到想要修改的例子,完成修改,这通常是以例子
(也就是一个目录)为单位进行修改,当然,你可以一次性修改多个例子。需要注意的是:只修改.go
和.sh
文件。.hash
文件是tools/build
自动更新的,主要用于判断文件内容是否有改动; - 使用
tools/build
命令重新生成静态文件。这一步会格式化代码,并判断内容是否有改动。对于内容有改动的例子,会自动将该例子的代码提交至http://play.golang.org/
进行测试,这一步可能需要克服网络障碍(实在无法解决也没关系,只更新内容即可,剩下的交给我们)。通过测试后,会自动更新静态文件; tools/serve
本地预览效果;- 通过自测后即可提交 pull request :)
项目现由 gobyexample-cn 维护,例子已完全与英文版同步(截止 2020-01-20),均为 75 个,可以在这里查看 同步进度。
后续可能会出现与英文版同步不及时的情况,非常欢迎
各位同学 fork 并提交 pull request。
原版的英文项目使用 vendor 解决依赖,中文版可以使用 GO MOD
解决依赖。
注意:依赖库 blackfriday 的 2.x.x 版本目前与项目不兼容,只能使用 1.x.x 版本,项目的 go.mod
文件已正确配置,同学们不要随意修改。直接执行 tools/build
等命令即可。
感谢本翻译项目的原作者 everyx,完成了所有文件最初的翻译,同时也感谢项目每一位 贡献者 的辛勤付出。
JetBrains
公司为本项目提供了 free JetBrains Open Source license(s),在此表示感谢。