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 \n",v)
    })
    //求平方跟
    visit(arr,func(v float64){
        v =math.Sqrt(v)
        fmt.Printf("%0.0f \n",v)
    })
}

func visit(list []float64, f func(float64)){
    for _,value := range list{
        f(value)
    }
}
复制代码

 

posted @   sixinshuier  阅读(92)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示