Git Product home page Git Product logo

gobyexample's Introduction

Go by Example 中文版

Go by Example 是一个通过带注释的示例程序学习 Go 语言的网站。网站包含了从简单的 Hello World 到高级特性 Goroutine、Channel 等一系列示例程序,并附带了注释说明,非常适合 Go 语言初学者。

如果您想学习 Go 语言基础知识,不要犹豫,请直接前往 Go by Example 开始学习!

如果您觉得本项目还不错的话,记得回来给个 Star 哦 o( ̄▽ ̄)ブ

综述

如果你想了解 Go by Example 网站 是如何构建的,或者想为该项目贡献代码,请查看下面的内容:

本项目包含了网站的内容和构建工具链,网站使用的是 public 目录下静态文件(html 等文件)的内容。它是这样被构建出来的:通过 程序 提取 examples 目录下的源码及注释,并使用 templates 目录下的静态文件模板将其渲染为静态文件,最终将生成的静态文件输出到 public 目录下。

实现此构建过程的 程序 位于 tools 目录下,构建得到的 public 目录下的静态文件(html 等文件),可以部署到任何支持静态内容的系统。例如 S3、CloudFront 以及任何 Web 服务器。

构建

Build Status

若想自行构建该网站,你需要安装 Go。然后运行下面的命令:

$ tools/build

若想循环持续构建:

$ tools/build-loop

在本地启动服务浏览网站

$ tools/serve

然后再浏览器中打开 http://127.0.0.1:8000/

发布

下面的例子展示了如何将网站上传至 AWS:

$ 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 协议。

其他语言

本项目只是 mmcgranaGo by Example 项目的中文翻译。

除中文版外,该项目还有以下语言:

致谢

感谢 Jeremy AshkenasDocco,启发了这个项目。

贡献说明

从这部分开始,后面的内容都是中文版的贡献者们给自己加的戏。

好吧,其实前面的内容也加了很多戏,没有完全根据英文版翻译。

如果你发现中文版的例子没有及时与英文版同步,或者你觉得某个例子翻译得不够好,甚至只是一个错误的文字、单词或符号,我们都 非常欢迎 你能够提交 pull request 以帮助我们使项目更完善,贡献流程大致如下:

  1. Fork 该仓库。
  2. examples 目录下找到想要修改的例子,完成修改,这通常是以 例子(也就是一个目录)为单位进行修改,当然,你可以一次性修改多个例子。需要注意的是:只修改 .go.sh 文件。.hash 文件是 tools/build 自动更新的,主要用于判断文件内容是否有改动;
  3. 使用 tools/build 命令重新生成静态文件。这一步会格式化代码,并判断内容是否有改动。对于内容有改动的例子,会自动将该例子的代码提交至 https://play.studygolang.com/ 进行测试。通过测试后,会自动更新静态文件;
  4. tools/serve 本地预览效果;
  5. 通过自测后即可提交 pull request :)

项目现由 gobyexample-cn 维护,例子已完全与英文版同步(截止 2022-3-20),均为 79 个,可以在这里查看 同步进度

后续可能会出现与英文版同步不及时的情况,非常欢迎 各位同学 fork 并提交 pull request。

中文版的致谢

感谢本翻译项目的原作者 everyx,完成了所有文件最初的翻译,同时也感谢项目每一位 贡献者 的辛勤付出。

JetBrains 公司为本项目提供了 free JetBrains Open Source license(s),在此表示感谢。

jetbrains jetbrains jetbrains

gobyexample's People

Contributors

3ks avatar adam-singer avatar akagi201 avatar brandony avatar brandur avatar carsonmcdonald avatar castlebin avatar catsby avatar cespare avatar danp avatar everyx avatar imane0897 avatar jakejscott avatar jaywgraves avatar jpfuentes2 avatar lispython avatar mahuihuang avatar minikomi avatar mmcgrana avatar nikai3d avatar owenthereal avatar schezuk avatar stroborobo avatar taiojia avatar timzchen avatar xg-wang avatar yangy2000 avatar yanyixing avatar zakj avatar zwfang avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gobyexample's Issues

window下构建项目问题。

系统win10,使用 go get github.com/russross/blackfriday 构建项目,目录下没有 tools文件夹。


建议修改readme,做相应说明。

"file does not exit" error on windows, while english version is ok to run

Thank you for the translation, they are so great!

When I build it locally, I come to the following file missing error, while the file is actually at that certain place. I noticed the code to call this file is the same, which is tools/generate.go, with English version, and I could compile correctly in original English version, so I'm not so sure where this problem come from.

error info

panic: exec: "./vendor/pygments/pygmentize": file does not exist

goroutine 1 [running]:
main.check(...)
        C:/somepath/gobyexample/tools/generate.go:32
main.pipe(0x7c1fa5, 0x1c, 0xc000079c90, 0x4, 0x4, 0xc00023c07b, 0xc, 0x7b8c03, 0x1, 0xc00020a510)
        C:/somepath/gobyexample/tools/generate.go:55 +0x300
main.cachedPygmentize(0x7b8d14, 0x2, 0xc00023c07b, 0xc, 0xc000248100, 0x7b)
        C:/somepath/gobyexample/tools/generate.go:88 +0x2cb
main.parseAndRenderSegs(0xc00022e100, 0x19, 0x5, 0x0, 0x4, 0x0, 0x0)
        C:/somepath/gobyexample/tools/generate.go:225 +0x13f
main.parseExamples(0x7c01cb, 0x17, 0xc0000106c0)
        C:/somepath/gobyexample/tools/generate.go:271 +0x918
main.main()
        C:/somepath/gobyexample/tools/generate.go:334 +0x303
exit status 2

Environment

System: Windows10 Pro
Bash: Git Bash

timeouts这章的go文件和html好像有点对不上

RT
使用这个 select 超时方式,需要使用通道传递结果。这对于一班情况是个好的方式,因为其他重要的 Go 特性是基于通道和select 的。接下来我们就要看到两个例子:timer 和 ticker。
这段在go文件里木有

关于"临时文件和目录"无法删除tempfile

问题描述:
执行"临时文件和目录"代码时,会存在这样的error:The process cannot access the file because it is being used by another process.
首先代码如网站描述:

func check(e error) {
    if e != nil {
        panic(e)
    }
}

func main() {

    f, err := os.CreateTemp("", "sample")
    check(err)

    fmt.Println("Temp file name:", f.Name())

    defer os.Remove(f.Name())

    _, err = f.Write([]byte{1, 2, 3, 4})
    check(err)
}

在这个过程中并不能删掉所创建的临时文件,因为此时*File未关闭(造成存在一个process 正在访问file),导致os.Remove()无法访问,进行删除。
故应该修改为:

func check(e error) {
    if e != nil {
        panic(e)
    }
}

func main() {

    f, err := os.CreateTemp("", "sample")
    check(err)

    fmt.Println("Temp file name:", f.Name())

    defer os.Remove(f.Name())
    defer f.Close()
    _, err = f.Write([]byte{1, 2, 3, 4})
    check(err)
}

sorting-by-functions

This is not a issue!
I just want to say that we have an easier way to implement sorting-by-functions like this:

import (
	"fmt"
	"sort"
)

func main() {
	fruits := []string{"peach", "banana", "kiwi"}
	sort.Slice(fruits, func(i, j int) bool {
		return len(fruits[i]) < len(fruits[j])
	})
	fmt.Println(fruits)
}

语法问题

image
这里不包含下标为5的元素 在切片那一页
image
image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.