zoukankan      html  css  js  c++  java
  • 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)
    }

      

  • 相关阅读:
    [POI2007]山峰和山谷Grz
    [POI2007]驾驶考试egz
    [POI2007]立方体大作战tet
    BZOJ1085 [SCOI2005]骑士精神
    BZOJ1975 [Sdoi2010]魔法猪学院
    codeforces754D Fedor and coupons
    UOJ79 一般图最大匹配
    BZOJ3944 Sum
    BZOJ3434 [Wc2014]时空穿梭
    UOJ58 【WC2013】糖果公园
  • 原文地址:https://www.cnblogs.com/jec1999/p/9868068.html
Copyright © 2011-2022 走看看