• Go语言入门心法(五): 函数



    Go语言入门心法(一): 基础语法

    Go语言入门心法(二): 结构体

    Go语言入门心法(三): 接口

    Go语言入门心法(四): 异常体系

     Go语言入门心法(五): 函数

    Go语言入门心法(六): HTTP面向客户端|服务端编程

    Go语言入门心法(七): 并发与通道

    Go语言入门心法(八): mysql驱动安装报错onnection failed

    Go语言入门心法(九): 引入三方依赖

    Go语言入门心法(十):Go语言操作MYSQL(CRUD)|事务处理

    Go语言入门心法(十一): 文件处理

    Go语言入门心法(十二): GORM映射框架

    Go语言入门心法(十三): 反射认知升维


     一: go语言函数认知 


    函数相关认知升维:
    
    
    1. 函数的功能就是把相对独立的某个相同或者时类型的功能抽象处理,使之成为一个独立的实体;这样可以避免重复代码的编写;
    2. (1)函数的声明: func 函数名(参数列表) (返回参数列表) {
    3. 函数体
    4. }
    5. (2)匿名函数声明: func(参数列表) (返回参数列表) {
    6. 函数体
    7. }
    8. (3)函数不需要返回值时,省略返回值参数的列表;
    9. 函数参数的简写: (3.1)如果函数的参数列表的类型相同时,可以省略前面参数的类型,只写后一个参数的类型;
    10. 函数返回值简写: (3.2)如果函数参数的返回值都是同一类型,在返回值列表中可将返回参数省略
    11. (4)匿名函数声明同时赋值
    12. func(形参列表)(返回值列表){
    13. 函数体
    14. }(实参列表)

    1. package main
    2. import "fmt"
    3. /*
    4. 函数相关认知升维:
    5. 函数的功能就是把相对独立的某个相同或者时类型的功能抽象处理,使之成为一个独立的实体;这样可以避免重复代码的编写;
    6. (1)函数的声明: func 函数名(参数列表) (返回参数列表) {
    7. 函数体
    8. }
    9. (2)匿名函数声明: func(参数列表) (返回参数列表) {
    10. 函数体
    11. }
    12. (3)函数不需要返回值时,省略返回值参数的列表;
    13. 函数参数的简写: (3.1)如果函数的参数列表的类型相同时,可以省略前面参数的类型,只写后一个参数的类型;
    14. 函数返回值简写: (3.2)如果函数参数的返回值都是同一类型,在返回值列表中可将返回参数省略
    15. (4)匿名函数声明同时赋值
    16. func(形参列表)(返回值列表){
    17. 函数体
    18. }(实参列表)
    19. */
    20. func main() {
    21. // 函数赋值给变量
    22. var a = add
    23. // 调用函数
    24. println("调用add函数: ", a(12, 22))
    25. // 使用函数作为类型声明一个函数变量
    26. var b func(t, m int) (sub int)
    27. println("函数b = ", b)
    28. // 给函数变量b 赋值同类型的函数
    29. b = subtraction
    30. println("使用函数声明函数变量并调用函数: ", b(500, 200))
    31. print("调用无返回值的函数: ")
    32. printStr("无参函数")
    33. println()
    34. println("声明同时调用匿名函数")
    35. println()
    36. println()
    37. println("=========================声明同时调用匿名函数=========================")
    38. func(data string) {
    39. println("声明匿名函数的同时调用匿名函数: ", data)
    40. }("匿名函数的实参")
    41. println()
    42. println("========================先声明在调用匿名函数==========================")
    43. f1 := func(a, b int) (t int) {
    44. t = a * b
    45. return t
    46. }
    47. println("调用匿名函数[使用先声明后调用的方方式]: ", f1(5, 6))
    48. }
    49. // 定义add函数
    50. func add(x int, y int) (sum int) {
    51. sum = x + y
    52. return sum
    53. }
    54. // 定义subtraction函数,同类型参数,省略前面变量的类型
    55. func subtraction(a, b int) (sub int) {
    56. if a > b {
    57. sub = a - b
    58. } else {
    59. sub = b - a
    60. }
    61. return sub
    62. }
    63. // 无返回值的函数省略返回值列表
    64. func printStr(content string) {
    65. fmt.Printf("传入的参数 %v", content)
    66. }

    运行效果:


    GOROOT=D:\program_file_worker\go1.20 #gosetup
    GOPATH=D:\program_file_worker\go1.20\bin;C:\Users\Administrator\go #gosetup
    D:\program_file_worker\go1.20\bin\go.exe build -o C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_OOPFunctionToGrammar_go.exe D:\program_file\go_workspace\org.jd.data\funcation\OOPFunctionToGrammar.go #gosetup
    C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_OOPFunctionToGrammar_go.exe
    调用add函数:  34
    函数b =  0x0
    使用函数声明函数变量并调用函数:  300
    调用无返回值的函数: 传入的参数 无参函数
    声明同时调用匿名函数


    =========================声明同时调用匿名函数=========================
    声明匿名函数的同时调用匿名函数:  匿名函数的实参

    ========================先声明在调用匿名函数==========================
    调用匿名函数[使用先声明后调用的方方式]:  30

    Process finished with the exit code 0

    二: go语言可变参数与函数变量


    函数变量||函数可变参数:
    
       在go语言中,函数是一种类型,可以将其保存在变量中
       函数变量的声明如下:
       var 变量名称 func(形成列表)(返回值列表)

           func 函数名(实参列表,...参数类型)(返回值类别){函数体 }


    1. package main
    2. import "fmt"
    3. /*
    4. 函数变量||函数可变参数:
    5. 在go语言中,函数是一种类型,可以将其保存在变量中
    6. 函数变量的声明如下:
    7. var 变量名称 func(形成列表)(返回值列表)
    8. */
    9. func main() {
    10. println("========================go语言中函数的声明======================")
    11. a := 100
    12. b := 20
    13. var f1 func(x int, y int) (sum int, sub int)
    14. f1 = addSub
    15. sum, sub := f1(a, b)
    16. fmt.Println(a, "+", b, sum)
    17. fmt.Println(a, "-", b, sub)
    18. println("调用返回默认值的函数: ")
    19. e, f, g := defaultValue()
    20. fmt.Printf("调用函数返回默认值分别为: %v ,%v ,%v ", e, f, g)
    21. h, m, n := defaultValueInit()
    22. println()
    23. fmt.Printf("调用函数返回默认值分别为: %v ,%v ,%v \n", h, m, n)
    24. println()
    25. println()
    26. fmt.Println("1+2+3+4+5+6+7+8+9+10 = ", addSum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
    27. println("===========================来看看go语言内置的可变参数的函数===========================")
    28. println(`
    29. 看看println函数的源代码:
    30. func println(args ...Type)
    31. 看看fmt.printf函数的源代码:
    32. func Printf(format string, a ...any) (n int, err error) {
    33. return Fprintf(os.Stdout, format, a...)
    34. }
    35. `)
    36. }
    37. // 定义函数是给出默认的返回值
    38. func defaultValue() (a int, b string, c bool) {
    39. return
    40. }
    41. // 定义函数是给出默认的返回值
    42. func defaultValueInit() (a string, b string, c bool) {
    43. return "1", "", false
    44. }
    45. func addSub(x int, y int) (sum int, sub int) {
    46. sum = x + y
    47. sub = x - y
    48. return sum, sub
    49. }
    50. // 定义可变参数函数
    51. func addSum(slice ...int) int {
    52. sum := 0
    53. for _, value := range slice {
    54. sum = sum + value
    55. }
    56. return sum
    57. }

    运行效果:


    GOROOT=D:\program_file_worker\go1.20 #gosetup
    GOPATH=D:\program_file_worker\go1.20\bin;C:\Users\Administrator\go #gosetup
    D:\program_file_worker\go1.20\bin\go.exe build -o C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_OOPFunctionToParameterUserMultParams_go.exe D:\program_file\go_workspace\org.jd.data\funcation\OOPFunctionToParameterUserMultParams.go #gosetup
    C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_OOPFunctionToParameterUserMultParams_go.exe
    ========================go语言中函数的声明======================
    100 + 20 120
    100 - 20 80
    调用返回默认值的函数:
    调用函数返回默认值分别为: 0 , ,false
    调用函数返回默认值分别为: 1 , ,false


    1+2+3+4+5+6+7+8+9+10 =  55
    ===========================来看看go语言内置的可变参数的函数===========================


             看看println函数的源代码:
             func println(args ...Type)
             看看fmt.printf函数的源代码:

             func Printf(format string, a ...any) (n int, err error) {
                      return Fprintf(os.Stdout, format, a...)
             }


    Process finished with the exit code 0
     

    三: 函数闭包认知


    四: 函数延迟执行|内置函数


    忙着去耍帅,后期补上..........

  • 相关阅读:
    Qt学习08 启航!第一个应用实例
    javaSE--数据类型(复习)
    MySQL常用高级语句
    国密https访问
    在agx xavier上运行 deepstream的样例 deepstream-test4
    网络协议--IP:网际协议
    [消息队列 Kafka] Kafka 架构组件及其特性(二)Producer原理
    nanodet笔记
    Springboot建筑造价师资格考试应试网站毕业设计源码260839
    iphone xr密码错误太多次 连接itunes
  • 原文地址:https://blog.csdn.net/u014635374/article/details/133842160