GO基础编程-自定义函数

	想知道更多区块链技术,请百度【链客区块链技术问答 社区】

定义格式
函数构成代码执行的逻辑结构。在Go语言中,函数的基本组成为:关键字func、函数名、参数列表、返回值、函数体和返回语句。

Go 语言函数定义格式如下:
func FuncName(/参数列表/) (o1 type1, o2 type2/返回类型/) {
//函数体、
return v1, v2 //返回多个值
}
函数定义说明:
func:函数由关键字 func 开始声明
funcName:函数名称,根据约定,函数名首字母小写即为private,大写即为public
参数列表:函数可以有0个或多个参数。
返回类型:
① 上面返回值什么两个变量名,当然这不是必须的,可以有类型,没变量。
② 如果只有一个返回值且不声明返回值变量,那么你可以省略,包括返回值的括号。
③ 如果没有返回值,那么就直接省略最后的返回信息。
④ 如果有返回值, 那么必须在函数的内部添加return语句
函数定义。
无参无返回值
func Test() { //无参无返回值函数定义
fmt.Println(“this is a test func”)
}

func main() {
Test() //无参无返回值函数调用
}
有参无返回值
普通参数列表
func Test01(v1 int, v2 int) { //方式1
fmt.Printf(“v1 = %d, v2 = %d\n”, v1, v2)
}
func Test02(v1, v2 int) { //方式2, v1, v2都是int类型
fmt.Printf(“v1 = %d, v2 = %d\n”, v1, v2)
}
func main() {
Test01(10, 20) //函数调用
Test02(11, 22) //函数调用
}
不定参数列表
不定参数类型
不定参数是指函数传入的参数个数为不定数量。为了做到这点,首先需要将函数定义为接受不定参数类型:
//形如…type格式的类型只能作为函数的参数类型存在,并且必须是最后一个参数func Test(args …int) {
for _, n := range args { //遍历参数列表
fmt.Println(n)
}
}
func main() {
//函数调用,可传0到多个参数
Test()
Test(1)
Test(1, 2, 3, 4)
}
不定参数的传递
func MyFunc01(args …int) {
fmt.Println(“MyFunc01”)
for _, n := range args { //遍历参数列表
fmt.Println(n)
}
}
func MyFunc02(args …int) {
fmt.Println(“MyFunc02”)
for _, n := range args { //遍历参数列表
fmt.Println(n)
}
}
func Test(args …int) {
MyFunc01(args…) //按原样传递, Test()的参数原封不动传递给MyFunc01
MyFunc02(args[1:]…) //Test()参数列表中,第1个参数及以后的参数传递给MyFunc02
}
func main() {
Test(1, 2, 3) //函数调用
}
无参有返回值
有返回值的函数,必须有明确的终止语句,否则会引发编译错误。
一个返回值
func Test01() int { //方式1
return 250
}
//官方建议:最好命名返回值,因为不命名返回值,虽然使得代码更加简洁了,但是会造成生成的文档可读性差
func Test02() (value int) { //方式2, 给返回值命名
value = 250
return value
}

func Test03() (value int) { //方式3, 给返回值命名
value = 250
return
}
func main() {
v1 := Test01() //函数调用
v2 := Test02() //函数调用
v3 := Test03() //函数调用
fmt.Printf(“v1 = %d, v2 = %d, v3 = %d\n”, v1, v2, v3)
}
多个返回值
func Test01() (int, string) { //方式1
return 250, “sb”
}
func Test02() (a int, str string) { //方式2, 给返回值命名
a = 250
str = “sb”
return
}
func main() {
v1, v2 := Test01() //函数调用
_, v3 := Test02() //函数调用, 第一个返回值丢弃
v4, _ := Test02() //函数调用, 第二个返回值丢弃
fmt.Printf(“v1 = %d, v2 = %s, v3 = %s, v4 = %d\n”, v1, v2, v3, v4)
}
有参有返回值
//求2个数的最小值和最大值
func MinAndMax(num1 int, num2 int) (min int, max int) {
if num1 > num2 { //如果num1 大于 num2
min = num2
max = num1
} else {
max = num2
min = num1
}
return
}
func main() {
min, max := MinAndMax(33, 22)
fmt.Printf(“min = %d, max = %d\n”, min, max) //min = 22, max = 33
}

猜你喜欢

转载自blog.csdn.net/weixin_44172023/article/details/86218641