5 函数

Posted jec1999

tags:

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

1 golang函数特点

  1.不支持重载,一个包中不能有2个同名的函数

  2.函数是一等公民,函数也是一种类型,一个函数可以赋值给变量

  3.匿名函数

  4.多返回值

2 函数参数传递方式

  1.值传递

  2.引用传递

  需要注意的是,无论是值传递还是引用传递,传递的的都是变量的副本,不过值传递是值的拷贝,引用传递是地址的拷贝,一般来说,地址拷贝更为高效,而值拷贝取决于拷贝的对象的大小,对象越大,则性能越低

  注意:map,slice,chan,指针,interface默认是引用方式传递

3 defer 在函数执行结束前执行,一般用于释放资源

//defer:在函数执行结束前执行,一般用于释放资源

func read() {
    conn,err := openConn()
    defer func(){
        if conn!=nil{
            conn.Close()
        }

    }()
}

 

 

package main

import "fmt"

func main() {
    //fmt.Println(test05(10, 5))
    //fmt.Println(add2(1,2,3,4,5))
    fmt.Println(contact("hello"," ","world"))
}

//命名返回值的名字
func test05(a, b int) (sum int) {
    sum = a + b
    return
}

//可变参数练习
func add2(a int, arg... int) (res int) {
    res += a
    for _, v := range arg {
        res += v
    }
    return
}

func contact(arg...string)(res string)  {
    for _,v :=range arg{
        res+=v
    }
    return
}

func test01(a int, b int) {

}

func test02(a int, b int) int {
    return 1
}

func test03(a int, b int) (int, int) {
    return 1, 1
}

func test04(a, b int) (int, int) {
    return 1, 1
}

 

package main

import "fmt"

func main()  {
    var(
        a=5
        b=10
        c=add//函数赋值给变量
    )
    res := test(c,a,b)
    fmt.Println(res)
}


type add_func func(int,int) int

func add(a,b int) int{
    return a+b
}

func test(op add_func,a,b int) int{
    return op(a,b)
}

 

  

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

VSCode自定义代码片段5——HTML元素结构

VSCode自定义代码片段5——HTML元素结构

VSCode自定义代码片段5——HTML元素结构

Laravel 5.8 有条件地插入 sql 片段

使用从循环内的代码片段中提取的函数避免代码冗余/计算开销

在 Visual Studio 中创建构造函数的代码片段或快捷方式