• 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)
    }

      

  • 相关阅读:
    异或运算
    GitHub使用简介
    归并排序
    快速排序
    字符串匹配
    Runner站立会议06
    Runner站立会议05
    Runner站立会议04
    记计账需求分析
    Runner站立会议03
  • 原文地址:https://www.cnblogs.com/jec1999/p/9868068.html
Copyright © 2020-2023  润新知