zoukankan      html  css  js  c++  java
  • Go-08-函数与指针

    Go语言的函数本身可以作为值进行传递,既支持匿名函数和闭包,又能满足接口。

    函数声明

    func 函数名 (参数列表)(返回参数列表){
    // 函数体
    }
    
    func funcName(parametername type1,parametername type2  ...)(output1 type1 , utput2 type2){
    //逻辑代码
    //返回多个值
    return value1,value2
    }

    参数类型简写

    在参数列表中,如果有多个参数变量,则以逗号分隔;如果相邻变量是同类型,则可以将类型省略

    func add(a,b int){
    }

    Go语言程序中全局变量与局部变量名称可以相同,但是函数内的局部变量会被优先考虑。

    函数变量

    在Go语言中,函数也是一种类型,可以和其他类型(如int32、float等等)一样被保存在变量

    匿名函数

    Go语言支持匿名函数,即在需要使用函数时再定义函数。匿名函数没有函数名,只有函数体,函数可以作为一种类型被赋值给变量,匿名函数也往往以变量方式被传递。

    匿名函数经常被用于实现回调函数,闭包等。

    func(参数列表) (返回参数列表){
    // 函数体
    }

    1. 在定义时调匿名函数

    package main
    
    import (
        "fmt"
    )
    
    func main() {
        func(name string){
            fmt.Println("hello",name)
        }("huahua")
    }

    2. 将匿名函数赋值给变量

    package main
    
    import "fmt"
    // 将匿名函数赋值给变量
    func main() {
        f:= func(name string) {
            fmt.Println("hello "+name)
        }
        f("sixinshuier")
    }

    3. 匿名函数用作回调函数

    package main
    
    import (
        "fmt"
        "math"
    )
    
    func main() {
        arr := []float64{1,4,36,30}
        // 求平方
        visit(arr, func(v float64) {
            v = math.Pow(v,2)
            fmt.Printf("%.2f 
    ",v)
        })
        //求平方跟
        visit(arr,func(v float64){
            v =math.Sqrt(v)
            fmt.Printf("%0.0f 
    ",v)
        })
    }
    
    func visit(list []float64, f func(float64)){
        for _,value := range list{
            f(value)
        }
    }
  • 相关阅读:
    apicloud 运费计算js+页面
    css让字体细长
    vue 请求完接口后执行方法
    js监听当前页面再次加载
    用apicloud+vue的VueLazyload实现缓存图片懒加载
    git merge和git rebase的区别(转)
    yuan先生博客链接
    django组件之contenttype(一)
    Django的orm中get和filter的不同
    python第三方库requests详解
  • 原文地址:https://www.cnblogs.com/shix0909/p/12965288.html
Copyright © 2011-2022 走看看