Go函数篇

Posted huiyichanmian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go函数篇相关的知识,希望对你有一定的参考价值。

1 定义格式

函数构成代码执行的逻辑结构。在Go语言中,函数的基本组成为:关键字func、函数名、参数列表、返回值、函数体和返回语句。

 

Go 语言函数定义格式如下:

func FuncName(/*参数列表*/) (o1 type1, o2 type2/*返回类型*/) 
    //函数体

    return v1, v2 //返回多个值

函数定义说明:

  • func:函数由关键字 func 开始声明
  • FuncName:函数名称,根据约定,函数名首字母小写即为private,大写即为public
  • 参数列表:函数可以有0个或多个参数,参数格式为:变量名 类型,如果有多个参数通过逗号分隔,不支持默认参数
  • 返回类型:

    ① 上面返回值声明了两个变量名o1和o2(命名返回参数),这个不是必须,可以只有类型没有变量名

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

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

    ④ 如果有返回值, 那么必须在函数的内部添加return语句

 

2 自定义函数

2.1 无参无返回值

package main

import "fmt"

//无参无返回值函数定义

func MyFunc()
    a := 666
    fmt.Println("a = ", a)



func main()
    // 无参无返回值函数的调用,函数名()
    MyFunc()

2.2 有参无返回值

2.2.1 普通参数列表

package main

import "fmt"


// 有参无返回值函数的定义, 普通参数列表
// 定义函数时,在函数后面()定义参数为形参
// 参数传递,只能由实参传递给形参,不能反过来,单向传递
func MyFunc1(a int)
    fmt.Println("a = ", a)


func MyFunc2(a int, b int)
    fmt.Printf("a = %d, b = %d\n", a, b)



func MyFunc3(a, b int)
    fmt.Printf("a = %d , b = %d \n", a, b)


func MyFunc4(a int, b string, c float64)



func MyFunc5(a, b string, c float64, d, e bool)



func main()
    // 有参无返回值函数调用: 函数名(所需参数)
    // 调用函数传递的参数叫实参
    MyFunc1(6666)
    MyFunc2(6666, 7777)

2.2.1 普通参数列表

1) 不定参数类型

不定参数是指函数传入的参数个数为不定数量。为了做到这点,首先需要将函数定义为接受不定参数类型:

package main

import "fmt"

// ...int这样的类型, ...type 不定参数类型
// Python中使用*args,**kwargs
func MyFunc01(args ...int)  //传递的实参可以是0或者多个
    fmt.Println("len(args) = ", len(args))  //获取用户传递参数的个数
    for i:=0; i<len(args); i++
        fmt.Printf("args[%d] = %d\n", i , args[i])
    

    fmt.Println("=================================================")

    for i, data := range args
        fmt.Printf("args[%d] = %d\n", i, data)
    


//固定参数一定要传参,不定参数根据需求传递
func MyFunc03(a int, args ...int)



//注意,不定参数,一定(只能)放在形参中的最后一个参数
//func MyFunc04(args ...int, a int)
// 

func main()
    MyFunc01(111,222,333)

 

以上是关于Go函数篇的主要内容,如果未能解决你的问题,请参考以下文章

Go语言系列教程之函数完结篇

Go 语言基础入门教程 —— 函数篇:函数的基本定义和调用

go语言语法(基础语法篇)

Go十大常见错误第9篇:使用文件名称作为函数输入

[Effective Go 中文翻译]函数篇

go语音之进阶篇显式调用panic函数