Go语言基础06 _function
Go语言基础06 _function
函数在Go语言中是一等公民
与其他主要编程语言的差别
- 可以有多个返回值
- 所有参数都是值传递:slice,map,channel 会有传引用的 错觉
- 函数可以作为变量的值
- 函数可以作为参数和返回值
defer 函数时 Go语言中类似于 java的 final一样的存在
package _func
import (
"fmt"
"math/rand"
"testing"
"time"
)
func returnMultiValues() (int, int) {
return rand.Intn(10), rand.Intn(20)
}
func timeSpent(inner func(op int) int) func(op int) int {
return func(n int) int {
start := time.Now()
ret := inner(n)
fmt.Println("time spent:", time.Since(start).Seconds()) // 计算 从 start 到这里 花了多少时间
return ret
}
}
func slowFun(op int) int {
time.Sleep(time.Second * 1)
return op
}
func TestFn(t *testing.T){
a,_ := returnMultiValues()
t.Log(a)
tsSF := timeSpent(slowFun)
t.Log(tsSF(10))
}
func Sum(ops ...int) int{// 使用 可变参数 的求和函数
ret := 0
for _,op :=range ops {
ret += op
}
return ret
}
func TestVarParam(t *testing.T){
t.Log(Sum(1,2,3,4))
t.Log(Sum(1,2,3,4,5,6))
}
func Clear(){
fmt.Println("Clear resources.")
}
func TestDefer(t *testing.T){
defer Clear()
fmt.Println("Start")
panic("err") // defer声明的 函数 会在最后执行 无论是否出错
//defer Clear()
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义