官网教程(需翻墙):https://tour.go-zh.org/basics/1
1.包
每个 Go 程序都是由包构成的。
程序从 main 包开始运行。
通过导入路径 “fmt” 和 “math/rand” 来使用这两个包。
按照约定,包名与导入路径的最后一个元素一致。例如,“math/rand” 包中的源码均以 package rand 语句开始。
示例
package main
import (
"fmt"
"math/rand"
)
func main() {
//翻译自官方文档
//rand.Intn(n int) 的返回值是一个int类型的数。
//这个数必定是一个非负的假随机数,数值在[0,n)之间。方法参数n的条件为不允许输入的n <= 0。
//具体链接:https://go-zh.org/pkg/math/rand/#Intn
fmt.Println("My favorite number is", rand.Intn(10))
}
2.导入
例子
import (
"fmt"
"math"
)
此代码用圆括号组合了导入,这是“分组”形式的导入语句。
当然你也可以编写多个导入语句,例如:
import "fmt"
import "math"
两者是等价的。使用分组导入语句是更好的形式。
3.导出名
例子
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.pi)
}
在 Go 中,如果一个名字以大写字母开头,那么它就是已导出的。例如,Pizza 就是个已导出名,Pi 也同样,它导出自 math 包。
pizza 和 pi 并未以大写字母开头,所以它们是未导出的。
在导入一个包时,你只能引用其中已导出的名字。任何“未导出”的名字在该包外均无法访问。
执行代码,观察错误输出。
错误:
prog.go:9:14: cannot refer to unexported name math.pi
prog.go:9:14: undefined: math.pi
Program exited.
将 math.pi 改名为 math.Pi 就能正常运行了。因为Pi是已导出的名字。