包
Go程序由包构成
程序从main包开始运行。
包命与导入路径的最后一个元素一致。e.g."math/rand"中源码以package rand开始。
package main
import (
"fmt"
"math/rand"
)
func main() {
fmt.Println("The number is ", rand.Intn(10))
}
导入
Go可以使用圆括号组合导入多个包,即分组导入,也可以编写多个导入语句进行导入。但是推荐使用分组导入。
package main
import (
"fmt"
"math"
)
func main() {
fmt.Printf("Now you have %g problems", math.Sqrt(7))
}
导出名
Go中,名称以大写字母开头,即已导出。e.g. Pi导出自math包。
导入包时,只能引用已导出名称。任何“未导出”名称在包外皆无法访问。
package main
import (
"fmt"
"math"
)
func main() {
fmt.Println(math.Pi)
}
函数
package main
import "fmt"
func add(x int, y int) int {
return x + y
}
func main() {
fmt.Println(add(42, 123))
}
当连续两个或多个函数的已命名形参类型相同时,除最后一个类型外,其余皆可以省略。
package main
import "fmt"
func fff(x, y, z int) {
fmt.Println(x)
fmt.Println(y)
fmt.Println(z)
}
func main() {
fff(1, 2, 3)
}
多值返回
函数可以返回任意数量的返回值。
package main
import "fmt"
func rrr(x, y, z int) (int, int, int) {
return x+10, y+10, z+10
}
func main() {
a, b, c := rrr(1, 2, 3)
fmt.Println(a, b, c)
}
命名返回值
Go的返回值可以被命名,被命名的返回值被视作函数顶部的变量。
返回值的名称可以作为文档使用。
没有参数的return 语句返回已命名的返回值,即直接返回。
直接返回语句应当用于短函数,用于长函数会影响代码可读性。
package main
import "fmt"
func ggg(x, y, z int)(xx, yy, zz int) {
xx = x
yy = y
zz = z
return
}
func main() {
fmt.Println(ggg(1, 2, 3))
}