包
每个 Go 程序都是由包组成的。 程序运行的入口是包main。 这个程序使用并导入了包"fmt"和"math/rand"。 按照惯例,包名与导入路径的最后一个目录一致。例如,"math/rand"包由packagerand 语句开始。 注意:这个程序的运行环境是固定的,因此 rand.Intn 总是会返回相同的数字。
package main
import (
"fmt"
"math/rand"
)
func main() {
fmt.Println("My favorite number is", rand.Intn(10))
}
导入
这个代码用圆括号组合了导入,这是“打包”导入语句。 同样可以编写多个导入语句,例如: import"fmt" import"math" 不过使用打包的导入语句是更好的形式。
package main
import (
"fmt"
"math"
)
func main() {
fmt.Printf("Now you have %g problems.", math.Nextafter(2, 3))
}
导出名
在导入了一个包之后,就可以用其导出的名称来调用它。 在 Go 中,首字母大写的名称是被导出的。 Foo 和 FOO 都是被导出的名称。名称 foo 是不会被导出的。 执行代码。然后将 math.pi 改名为 math.Pi 再试着执行一下。
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.pi)
}
函数
函数可以没有参数或接受多个参数。 在这个例子中,add接受两个 int 类型的参数。 注意类型在变量名_之后_。
package main
import "fmt"
func add(x int, y int) int {
return x + y
}
func main() {
fmt.Println(add(42, 13))
}
当两个或多个连续的函数命名参数是同一类型,则除了最后一个类型之外,其 他都可以省略。 在这个例子中, X int,y int 被缩写为 x,y int x,y int
package main
import "fmt"
func add(x, y int) int {
return x + y
}
func main() {
fmt.Println(add(42, 13))
}
个人思考
包是结构化代码的一种方式,每个程序都由包(通常简称为 pkg)的概念组成,可以使用自身的包或者从其它包中导 入内容。 如同其它一些编程语言中的类库或命名空间的概念,每个 Go 文件都属于且仅属于一个包。一个包可以由许多以 .go 为扩展名的源文件组成,因此文件名和包名一般来说都是不相同的。 你必须在源文件中非注释的第一行指明这个文件属于哪个包,如: package main 。 package main 表示一个可独立执 行的程序,每个 Go 应用程序都包含一个名为 main 的包。 一个应用程序可以包含不同的包,而且即使你只使用 main 包也不必把所有的代码都写在一个巨大的文件里:你可以 用一些较小的文件,并且在每个文件非注释的第一行都使用 package main 来指明这些文件都属于 main 包。如果 你打算编译包名不是为 main 的源文件,如 pack1 ,编译后产生的对象文件将会是 pack1.a 而不是可执行程 序。另外要注意的是,所有的包名都应该使用小写字母。