1、函数
和C语言类型,Go语言也有函数的概念,语法如下:
//func 定义函数关键字
//func_name 函数名称
//arg1,arg2 函数入参,可以为空,也可以是多个
//returnvlaue 函数返回值,可以是为空,也可以是多个
func func_name(arg1,arg2 ..) returnvalue {
}
2 参数和返回值
2.1 返回值
go 语言可以返回零个或多个值.
package main
import "fmt"
func swap(x, y string) (string, string){
return y, x
}
func swap2(x, y string) (string, string) {
return y,x
}
func main() {
a, b := swap("hello", "world")
fmt.Println(a, b)
a, b = swap2("test1", "test2")
fmt.Println(a,b)
}
当函数有多个返回值时,而我们有不处理某个返回值时,可以在使用_来取代返回值,不进行处理
func blank() (int, int) {
a := 2
b := 3
return a, b
}
func main() {
a, _ := blank()package main
fmt.Println(a)
}
2.2 入参
go语言的入参和C语言基本一致,分为按值专递(call by value)和按引用传递(call by reference). 按值传递的是参数的副本,对这个值修改不会影响函数体外参数的值,按引用传递在函数内的修改会影响到函数体外的值。
import "fmt"
func argtest(a int, p *int) {
a = a + 2
*p = 6
}
func main () {
a := 2
b := 4
fmt.Println(a, b)
argtest(a, &b)
fmt.Println(a, b)
}
输出:
2 4
2 6
3 函数作为参数
函数可以作为其他函数参数进行传递,然后在其他函数内调用执行。
import (
"fmt"
)
func main() {
callback(1, Add)
}
func Add (a , b int) {
fmt.Printf("The sum of %d and %d is:%d\n", a, b, a + b)
}
func callback(y int ,f func(int, int)) {
f(y, 2)
}
网友评论