1 定义
函数是将输入数据通过一系列算法运算之后,输出对应的结果。函数一般都是一些特定的功能块,实现某一种功能的封装,降低代码的冗余性
语法
// 关键字 函数名 函数参数 返回参数
func functionname(params paramstype) returntype{
// 函数体
}
测试
package main
import "fmt"
func add(a, b int) int {
return a + b
}
func main() {
a := 1
b := 2
c := add(a, b)
fmt.Println("a+b=", c) // a+b= 3
}
函数的参数和返回值类型不是必须的
package main
import "fmt"
func showinfo() {
fmt.Println("show info......")
}
func main() {
showinfo()
}
2 参数的写法
参数不是必须的,函数可以不传参,在上面的例子中已经写了,这里不多写
含有多个相同类型的参数
如果含有多个相同类型的参数不用每个参数后面都写参数类型,直接在最后面写一个参数类型即可
package main
import "fmt"
func sum(a, b, c int) int {
return a + b + c
}
func main() {
total := sum(4, 5, 6)
fmt.Println("total = ", total) // total = 15
}
含有多个不同类型的参数
多个不同类型的参数必须在每一个参数后面写上参数类型
package main
import "fmt"
func showinfo(name string, age int, height float64, weight float64) {
fmt.Printf("姓名:%s\n年龄:%d\n身高:%f\n体重:%f", name, age, height, weight)
}
func main() {
name := "科比"
age := 43
height := 198.0
weight := 101.0
showinfo(name, age, height, weight)
}
/*
姓名:科比
年龄:43
身高:198.000000
体重:101.000000
*/
3 返回值的写法
一个返回值
func funcname(params paramstype) returntype{
// 函数体
}
package main
import "fmt"
func add(a, b int) int {
return a + b
}
func main() {
c := add(1, 2)
fmt.Println(c)
}
多个返回值
返回两个或多个返回值,返回值类型一定要用括号括起来
func funcname(params paramstype) (int, int) {
return a,b
}
package main
import "fmt"
func rectangle(l, w float64) (float64, float64) {
round := (l + w) * 2
area := l * w
return round, area
}
func main() {
round, area := rectangle(3.0, 4.0)
fmt.Println("round=", round, "area=", area)
}
命名返回值
返回值在参数后面直接定义好,就不需要在return后面写返回值了
语法
package main
import "fmt"
func rectangle(l, w float64) (round, area float64) {
round = (l + w) * 2
area = l * w
return
}
func main() {
round, area := rectangle(3.0, 4.0)
fmt.Println("round=", round, "area=", area)
}
4 空白符
Go中使用_表示空白符,空白符可是是任何类型的的任何值,如果函数有两个返回值,我们不关心其中一个返回值
package main
import "fmt"
func rectangle(l, w float64) (round, area float64) {
round = (l + w) * 2
area = l * w
return
}
func main() {
round, _ := rectangle(3.0, 4.0)
fmt.Println("round=", round)
}
只关心周长,不关心面积,使用空白符代替面积的位置