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

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值