Golang 函数

优质
小牛编辑
148浏览
2023-12-01

Go 语言和 C 语言一样也有函数的概念,Go 语言中函数除了定义格式和不用声明以外,其它方面几乎和 C 语言一模一样,格式:

func 函数名称(形参列表)(返回值列表){
    函数体;
}

无参数无返回值函数

func say()  {
	fmt.Println("Hello World!!!")
}

有参数无返回值函数

func say(name string)  {
	fmt.Println("Hello ", name)
}

无参数有返回值函数

func sum() int { // 只有一个返回值时,返回值列表的()可以省略
	return 1 + 1
}

有参数有返回值函数

func sum(a int, b int) int {
	return a + b
}

和 C 语言函数差异

和C语言不同的是,Go语言中可以给函数的返回值指定名称

// 给返回值指定了一个名称叫做res, return时会自动将函数体内部res作为返回值
// 其实本质就是提前定义了一个局部变量res, 在函数体中使用的res就是这个局部变量,返回的也是这个局部变量
func sum() (res int) { 
	res = 1 + 1
	return
}

和C语言不同的是,Go语言中的函数允许有多个返回值函数

func calculate(a int, b int) (sum int, sub int) {
	sum = a + b
	sub = a - b
	return
}

相邻同类型形参OR返回值类型可以合并,可以将数据类型写到最后一个同类型形参OR返回值后面

// a, b都是int类型, 所以只需要在b后面添加int即可
func calculate(a, b int) (sum, sub int) {
	sum = a + b
	sub = a - b
	return
}

和 C 语言不同的是 Go 语言中的函数不需要先声明在使用

package main
import "fmt"
func main() {
	say();
}
func say()  { // 在后面定义也可以在前面使用
	fmt.Println("Hello World!!!")
}