From 7dd41dcf4b042337d3ec34b3ffebe25bf376b211 Mon Sep 17 00:00:00 2001 From: parkma99 Date: Tue, 28 Dec 2021 20:30:40 +0800 Subject: [PATCH] write-your-first-program question Chinexe version --- .../问题/01-gopath/README.md | 19 ++ .../问题/02-code-your-first-program/README.md | 199 ++++++++++++++++++ .../问题/03-run-your-first-program/README.md | 50 +++++ 3 files changed, 268 insertions(+) create mode 100644 translation/chinese/02-编写第一个程序/问题/01-gopath/README.md create mode 100644 translation/chinese/02-编写第一个程序/问题/02-code-your-first-program/README.md create mode 100644 translation/chinese/02-编写第一个程序/问题/03-run-your-first-program/README.md diff --git a/translation/chinese/02-编写第一个程序/问题/01-gopath/README.md b/translation/chinese/02-编写第一个程序/问题/01-gopath/README.md new file mode 100644 index 0000000..2d1f183 --- /dev/null +++ b/translation/chinese/02-编写第一个程序/问题/01-gopath/README.md @@ -0,0 +1,19 @@ +## 应该保存 Go 源代码到哪里? +* 我的电脑任何地方 +* $GOPATH 下 +* $GOPATH/src 下 *正确* + +## $GOPATH 是什么? +* 它是 Go 运行时的文件 +* 存储 Go 源代码文件和编译的包的目录 +* 它是 gophers 需要关注的地址 + +## 需不需要设置 $GOPATH? +* 需要 +* 不需要: 它保存在我的电脑里面 +* 不需要: 它保存在用户目录下 *正确* + +## 如何打印 $GOPATH 的值? +* 使用 `ls` 命令 +* 使用 `go env GOPATH` 命令 *正确* +* 使用 `go environment` 命令 \ No newline at end of file diff --git a/translation/chinese/02-编写第一个程序/问题/02-code-your-first-program/README.md b/translation/chinese/02-编写第一个程序/问题/02-code-your-first-program/README.md new file mode 100644 index 0000000..bb9f058 --- /dev/null +++ b/translation/chinese/02-编写第一个程序/问题/02-code-your-first-program/README.md @@ -0,0 +1,199 @@ +## 下面哪一个关键字用来定义一个包? +```go +package main + +func main() { +} +``` +1. func +2. package *正确* +3. fmt.Println +4. import + +> **1:** func 关键字用来新定义一个函数 +> +> +> **2:** 对,package 关键字用来在 Go 文件中定义包 +> +> +> **3:** 这不是关键字,它是 fmt 包中的一个函数 +> +> +> **4:** import 关键字用来导入一个包 +> +> + + +## 在下面代码中使用 package main 的目的是什么? +```go +package main + +func main() { +} +``` +* 为了创建一个库包 +* 为了正确退出程序 +* 为了创建一个可执行的 Go 程序 *正确* + + +## 在下面代码中使用 func main 的目的是什么? +```go +package main + +func main() { +} +``` +1. 为了创建一个叫 main 的包 +2. 为了让 Go 开始执行程序 *正确* +3. 为了向控制台打印一条消息 + +> **1:** main function 不创建一个包 +> +> +> **2:** 对,Go 自动地从 main 函数开始执行 +> +> +> **3:** 它不会打印任何东西(目前为止) +> +> + + +## 在下面代码中使用 import "fmt" 的目的是什么? +```go +package main +import "fmt" + +func main() { + fmt.Println("Hi!") +} +``` +1. 它打印 "fmt" 到控制台 +2. 它创建一个叫 "fmt" 的包 +3. 它导入了 `fmt` 包; 这样你就可以使用其功能 *正确* + +> **1:** `fmt.Println` 打印一条消息而不是 `import "fmt"` +> +> +> **2:** `package` 关键字创建新包,而不是 `import` +> +> +> **3:** 对,举个例子,导入 fmt 包后,你就可以使用 Println 打印一条消息到控制台 +> +> + + +## 下面哪一个用来定义函数? +* func *正确* +* package +* Println +* import + + +## 函数是什么? +1. 它就像迷你程序,它是可复用可执行的代码块 *正确* +2. 它允许 Go 执行一个程序 +3. 它允许 Go 导入一个叫 function 的包 +4. 它打印一条消息到控制台 + +> **2:** Go 寻找 main 包的 func main 去执行,一个函数自己不能执行 +> +> +> **3:** 这是 `import` 的作用 +> +> +> **4:** 举个例子: 这是 `fmt.Println` 的功能 +> +> + + +## 是否需要亲自调用 main 函数 +1. 是的,只有这样才能运行自己的程序 +2. 不必,Go 会自动地调用 main 函数 *正确* + +> **1:** 不必, 不需要调用 main 函数, Go 自动执行它 +> +> + + +## 是否需要调用一个函数去执行它? +_(main 函数除外)_ +1. 需要,只有这样 Go 才能执行一个函数 *正确* +2. 需要,只有这样 Go 才执行程序 +3. 不需要,函数会自动执行 + +> **1:** 对的,需要自己调用函数,Go 不会自动执行函数,只有 main 函数自动调用(还有其他一些函数,不过目前还未学到) +> +> + +> **2:** 这是 `func main` 的唯一工作, 也只有 `func main` 才能执行程序 +> +> + +> **3:** Go 不会自动调用函数,除了 main 函数(还有其他一些函数,不过目前还未学到),所以,除了 main 函数,你需要手动调用函数 +> + + +## 下面的程序输出是什么? +```go +package main + +func main() { +} +``` +1. 它打印一条消息到控制台 +2. 它是正确的程序,但是什么都不输出 *正确* +3. 它不是正确的程序 + +> **1:** 它不是输出任何消息,可以使用 fmt.Println 函数来输出内容 +> +> + +> **2:** 对,它是正确的程序,然后因为它不包含 fmt.Println 所以它什么也不输出 +> +> + +> **3:** 它是正确的程序,它使用 package 关键字,并且有 main 函数。因此,这是一个有效且可执行的 Go 程序 +> +> + + +## 这个程序的输出是什么? +```go +package main + +func main() { + fmt.Println(Hi! I want to be a Gopher!) +} +``` +* Hi! I want to be a Gopher! +* 它什么都不打印 +* 它不是正确的程序 *正确* + +> **1:** 没有用双引号括起来,Println 不能获取值,应该是: fmt.Println("Hi! I want to be a Gopher") +> +> + +> **3:** 它没有导入 "fmt" 包, 还有 #1. +> +> + + +## 这个程序的输出是什么? +```go +package main +import "fmt" + +func main() { + fmt.Println("Hi there!") +} +``` +* Hi there! *正确* +* fmt +* 它不是正确的程序; 它导入的包里面没有函数叫 `Println` + +> **2:** import "fmt" 导入 fmt 包,就可以使用其功能 +> +> +> **3:** 实际上,这个程序是正确的 +> +> \ No newline at end of file diff --git a/translation/chinese/02-编写第一个程序/问题/03-run-your-first-program/README.md b/translation/chinese/02-编写第一个程序/问题/03-run-your-first-program/README.md new file mode 100644 index 0000000..e57ecad --- /dev/null +++ b/translation/chinese/02-编写第一个程序/问题/03-run-your-first-program/README.md @@ -0,0 +1,50 @@ +## `go build` 和 `go run` 有什么区别? +1. `go run` 只编译程序; 而 `go build` 编译运行程序 +2. `go run` 编译运行程序; whereas `go build` 只编译程序。 *正确* + +> **1:** 实际上相反的 +> +> +> **2:** `go run` 编译程序并把它放在一个临时目录下,然后在临时目录里运行整个程序 +> +> + + +## Go 保存编译后的代码在那个目录下? +1. 和执行 `go build` 相同的目录 *正确* +2. $GOPATH/src 目录 +3. $GOPATH/pkg 目录 +4. 进入一个临时目录 + +> **2:** 这里只有源代码文件 +> +> +> **3:** 当你执行 `go install`,Go 将你的代码安装在这里 +> +> + + +## 关于 runtime 哪个是正确的? +1. 它发生在开始运行程序时 *正确* +2. 它发生在编译程序时 + + +## 关于 compile-time 哪个是正确的? +1. 它发生在开始运行程序时 +2. 它发生在编译程序时 *正确* + + +## Go 程序什么时候打印一条信息到控制台? +1. 编译程序时 +2. 程序运行时 (compile-time 之后) *正确* +3. 程序运行时 (和 compile-time 同时) + +> **1:** 编译阶段,程序不能打印一条消息,因为它还没有被执行 +> +> +> **2:** 对, 程序只有这时才会计算机互交,向控制台打印一条消息 +> +> +> **3:** 程序只有编译之后才能运行 +> +> \ No newline at end of file