Go语言学习——函数一

函数

定义函数使用func关键字:

func 函数名(参数)(返回值){
    函数体
}

其中:

  • 函数名:由字母、数字、下划线组成。但函数名的第一个字母不能是数字。在同一个包内,函数名也称不能重名(包的概念详见后文)。
  • 参数:参数由参数变量和参数变量的类型组成,多个参数之间使用,分隔。
  • 返回值:返回值由返回值变量和其变量类型组成,也可以只写返回值的类型,多个返回值必须用()包裹,并用,分隔。
  • 函数体:实现指定功能的代码块。

函数的调用

函数名()的方式调用函数

参数

类型简写

可变参数

返回值

多返回值

返回值命名

package main

import "fmt"

// 函数

// 函数存在的意义?
// 函数是一段代码的封装
// 把一段逻辑抽象出来封装到一个函数中,给它起个名字,每次用到它的时候直接用函数名调用就可以了
// 使用函数能够让代码结构更清晰、更简洁。

// 函数的定义
func sum(x int, y int)(ret int) {
	return x + y
}

// 没有返回值
func f1(x int, y int) {
	fmt.Println(x + y)
}

// 没有参数没有返回值
func f2(){
	fmt.Println("f2")
}

// 没有参数但有返回值的
func f3() int {
	// return 3
	ret := 3
	return ret
}

// 返回值可以命名也可以不命名
// 命名的返回值就相当于在函数中声明一个变量
func f4(x int, y int)(ret int) {
	ret = x + y
	return // 命名的可以不写ret 使用命名返回值可以return后省略
}

// 多个返回值
func f5() (int, string) {
	return 1, "北京"
}

// 参数的类型简写:
// 当参数中连续多个参数的类型一致时,我们可以将非最后一个参数的类型省略
func f6(x, y, z int, m, n string, i, j bool) int {
	return x + y
}

// 可变长参数
// 可变长参数必须放在函数参数的最后
func f7(x string, y ...int) {
	fmt.Println(x)
	fmt.Println(y) // y的类型是切片slice 如果不传 []
}

// Go语言中没有默认参数这个概念

func main() {
	r := sum(1, 2)
	fmt.Println(r)

	_, n := f5()
	fmt.Println(n)

	f7("下雨了")
	f7("下雨了", 1, 2, 3, 4, 5)
}
posted @ 2022-05-03 22:38  寻月隐君  阅读(29)  评论(0编辑  收藏  举报