Golang之func学习

一、函数定义

函数是结构化编程中最小的模块单元,日常开发过程中,将复杂的算法过程分解为若干个小任务(代码块),使程序的结构性更清晰,程序可读性提升,易于后期维护和让别人读懂你的代码。

编写多个函数的主要目的是将一个需要很多行代码的复杂问题分解为一系列简单的任务(那就是函数)来解决。在实际编程中,我们把重复性的任务抽象成一个函数。

和所有的编程语言一样,Go语言支持各种风格的函数。在Go语言中,当函数执行到代码块最后一行 } 之前或者 return 语句的时候会退出,其中 return 语句可以带有零个或多个参数;这些参数将作为返回值供调用者使用。简单的 return 语句也可以用来结束 for 死循环,或者结束一个Go协程(goroutine)。

二、声明

1、基本结构

package main

func main(入参1 入参类型,入参2 入参类型...)(出参1 出参类型,出参2 出参类型...){
     函数体 // do somthing
     //一点要return出参 符合出参类型且入参一定要使用
}

//例如
func albert(a int ,b string)(ret_a int,ret_b string){
    ret_a = a
    ret_b = b
    return
}

func 小写开头是私有方法,大写开头是公用(外部可调用)

2、匿名函数

package main

func main(){
    //匿名函数
    b := func(data1 string){
        fmt.Println(data1)
    }
    
    b('我是匿名函数')
}

 func 中不能嵌套func,但是匿名函数可以。

3、不定参数

package main

func main(){
    mo(666,"1","2","3","4")
}

func main(){
    //传入切片
    ar :=[]string{"1","2","3","4"}
    mo(666,ar...)
}

func mo(data1 int,data2 ...string){
    fmt.Println(data1,data2)
    for k,v:= range data2{
        fmt.Println(k,v)
    }
}

//输出结果
//666 [1 2 3 4]
//0 1
//1 2
//2 3
//3 4

注意点:

1)关键字 func 用来声明一个函数 funcName;

2)函数可以有一个或者多个参数,每个参数后面带有类型,多个参数之间通过“,”分割;

3)函数可以返回多个值;

4)上面返回值声明了两个变量 ret_a和 ret_b,如果不想声明也可以,直接就两个类型;

5)如果只有一个返回值且不声明返回值变量,那么你可以省略,包括返回值的括号;

6)如果没有返回值,那么就直接省略最后的返回信息;

7)如果有返回值, 那么必须在函数的外层添加return语句;

三、特殊函数

1、自执行函数

package main

func main(){

    //自执行函数
    (func(){
        fmt.Println('自动执行中....')
    })()
    
}

2、闭包函数

package main

func main(){
    //调用
    mo()(4)
}

func mo()func(int){
    return func(num int){
        fmt.Println('闭包函数',num)
    }
}


//运行结果
闭包函数 4

//注意,闭包的func和return的func需一致

3、延迟调用函数

关键字: defer

package main

import fmt

func main(){
    defer mo()
    fmt.Println(1)
    fmt.Println(2)
    fmt.Println(3)
}

func mo(){
    fmt.Println('我要最先打印!!!')
}


//运行结果
1
2
3
我要最先打印!!!

参考:Go入门16:函数 func - 简书

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值