一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第13天,点击查看活动详情。
函数
func funcName(params) result{
}
- func关键字
- funcName函数名称
- params函数参数
- ()后可以有函数的返回值result
func main() {
result := sum(1, 2)
fmt.Println(result)
}
func sum(a int, b int) int {
return a + b
}
多值返回
Go语言的函数可以返回多个值(第一个值返回函数的结果,第二个值返回函数出错的信息)
func main() {
result, err := sum(1, 2)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(result)
}
}
func sum(a, b int) (int, error) {
if a < 0 || b < 0 {
return 0, errors.New("a或b不能为负数")
}
return a + b, nil
}
命名返回参数
函数的返回值可以命名为一个参数,在函数体中可以使用。
func sum(a, b int) (sum int, err error) {
if a < 0 || b < 0 {
return 0, errors.New("a或b不能为负数")
}
sum = a + b
err = nil
return
}
可变参数
函数的参数的数量是可变的
func add(params ...int) int {
sum := 0
for_,i := range params {
sum += i
}
return sum
}
注意:如果定义的函数中既有普通参数又有可变参数,可变参数一定要放在参数列表的最后一个。
包级函数
- 函数名称首字母小写代表私有函数,只有在同一个包中才可以被调用
- 函数名称首字母大写代表公有函数,不同的包也可以调用
- 任何一个函数都会从属于一个包
匿名函数
sum2 := func(a,b int) {
return a + b
}
fmt.Println(sum2(1,2))
匿名函数可以做到在函数中再定义函数,也可以称为内部函数。再函数内定义的内部函数,可以使用外部函数的变量等,这种方式也称为闭包。
方法
方法必须要有一个接收者,这个接收者是一个类型,方法与类型绑定在一起,称为这个类型的方法。
type Age uint
func (age Age) String() {
fmt.Println("age",age)
}
func main (){
age := Age(25)
age.String()//输出age25
}