Appearance
函数
- 函数是一块执行特定任务的代码。
格式
func functionName()
go
func functionName(){
}参数
无参数
- 无参数函数,不需要在函数名后面添加参数列表。
go
func test1() {
}固定参数
- 设置固定的参数
go
//可以传多个参数 必须指定类型
func test1(a int, b int) {
}可变参数
- 可变参数函数,参数数量是可变的。
- 可变参数只能在最后一位
go
func test2(a int, b ...int) {
}函数选项
- 函数参数可以是命名参数,也可以是位置参数。
go
// 定义 结构体
type Person struct {
Name string
Age int
Sex string
}
// 已定义 选项函数 类型
type Options func(*Person)
// 定义 选项函数
func WithName(name string) Options {
return func(p *Person) {
p.Name = name
}
}
// 定义 选项函数
func WithAge(age int) Options {
return func(p *Person) {
p.Age = age
}
}
// 定义 选项函数
func WithSex(sex string) Options {
return func(p *Person) {
p.Sex = sex
}
}
func NewPerson(opts ...Options) *Person {
p := &Person{}
for _, opt := range opts {
opt(p)
}
return p
}
func main() {
p := NewPerson(WithName("张三"), WithAge(18), WithSex("男"))
fmt.Println(p)
}返回值
- 函数可以返回一个或多个值。
go
func test3(a int, b int) (int, error) {
return a + b, nil
}特殊函数init
- init函数是用于程序执行前做包的初始化的函数,比如初始化包里的变量等。
- 每个包可以拥有多个init函数
- 包的每个源文件也可以拥有多个init函数
- init函数不能被其他函数调用,而是在main函数执行之前,自动被调用
go
func init (){
// 干一些初始化操作
}特殊函数main
go
// 程序默认入口函数, 每个程序只能有一个main函数
func main (){
}注意事项
- 首字母小写的函数,只能本包使用。
- 首字母大写的函数,其他包能使用。
