translation/chinese/05-编写你的第一个库程序包/问题/README.md
注意 答案当中含有解释。即便你已经知道答案,也请逐一选择每个选项,这样可以阅读到解释。
1: 你不能运行,但你可以从其他包中导入它。
2: 在一个库程序包中,没有必要包含 main 函数。因为它并非一个可执行的包。只有在可执行的包中才需要 main 函数。
4: 你没有必要编译它。当你导入它时,它会自动在编译或运行时被其他程序或库构建。
1: 当你这样做时,它的确会被导出,但不要这样做;因此我认为这个答案不正确 :)
2: 正确的。这样做之后其他包便可以访问它。
3: 它应该在包作用域内,而不是函数作用域内。
4: 没必要这样做。
1: 你不能导出包。所有的包都是已经导出的。除非你将它们放到一个叫做 "internal" 的目录中。但是,这是一个对于现在过于进阶的话题。
2: 正确的。
3: 你不能在不导入的情况下,在一个包中访问另一个包。
4: 你不能这么做。你需要在 GOPATH 后使用完整的路径来导入它。顺带一提,在不久的将来,这可能会随着 Go 模块的支持而改变。
package wizard
import "fmt"
func doMagic() {
fmt.Println("enchanted!")
}
func Fireball() {
fmt.Println("fireball!!!")
}
1: 这是导入包的名称。
2: 它以小写字母开头;所以,它没有被导出。
3: 正确的。它以大写字母开头。
4: 这不是你写的函数。它已经在 fmt 包中被导出了。但它没有在这里被导出。
package wizard
import "fmt"
var one string
var Two string
var greenTrees string
func doMagic() {
fmt.Println("enchanted!")
}
func Fireball() {
fmt.Println("fireball!!!")
}
1: doMagic 以小写字母开头;所以没有被导出。
2: 正确的。Fireball 和 Two 都以大写字母开头。
3: greenTrees 以小写字母开头;所以没有被导出。
4: one 和 greenTrees 没有以大写字母开头;所以没有被导出。