Go学习之旅之函数(1) | Go主题月

301 阅读2分钟

函数是一段代码的封装,尤其是需要重复重复调用的代码,封装到函数中,既避免了重复编写,也使代码结构更清晰,简洁。

1. 函数定义

Go中定义函数用关键字func,以下是四种类型的函数定义:

(1)没有参数没有返回值的函数

func f1(){
		fmt.Println("f1")
	}

(2)有参数没有返回值

func f2(x int,y int){
		fmt.Println(x,y)
	}

(3) 没有参数有返回值

func f3() int{
		return 100
	}

(4)有参数有返回值

func f4(x int,y int) int{
		return x+y
	}

函数定义注意事项:

  • 可以在函数头的返回值中,命名返回值。

    此时命名的返回值相当于提前在函数中声明一个变量.

    return 也不用写成return ret.

	func f5(x int,y int) (ret int){
		ret = x+y
		return 
	}
  • Go支持返回多个返回值

    多返回值能方便地获得函数执行后的多个返回参数,Go语言经常使用多返回值中的最后一个返回参数返回函数执行中可能发生的错误。

C/C++ 语言中只支持一个返回值,在需要返回多个数值时,则需要使用结构体返回结果,或者在参数中使用指针变量,然后在函数内部修改外部传入的变量值,实现返回计算结果,C++ 语言中为了安全性,建议在参数返回数据时使用“引用”替代指针。

  • 定义可变长参数

    可变长参数必须放在函数参数的最后

//可变长参数
//y后加...表示可以加多个参数
func f6 (x string, y...int) {
	fmt.Println(x)
	fmt.Println(y)  //y类型是int类型切片
}

func main(){
	f6("老鼠爱大米",1,23,4,6)
 }

输出结果:

老鼠爱大米
[1 23 4 6]
  • Go语言中没有默认参数这一概念,这与c/c++/python中不同,Go中参数只有传与不传两种,这是Go的设计机制,有助于代码的统一。