Go函数
Posted aidata
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go函数相关的知识,希望对你有一定的参考价值。
函数是一等公民
与其他主要编程语言的差异
1.可以有多个返回值
2.所有参数都是值传递
slice、map、channel会有传引用是错觉,如切片背后是数组,是一个数据结构,里面包含了指向对应数组的指针,数据结构被复制,指针操作的仍是同一块空间,感觉像是传引用
3.函数可以作为变量的值
4.函数可以作为参数和返回值
package fun_test import ( "fmt" "math/rand" "testing" "time" ) // 多个返回值 func returnMultiValues()(int, int) { return rand.Intn(10), rand.Intn(20) } // 函数可以作为参数和返回值 // 计算inner函数运行的时间 func timeSpent(inner func(op int)int) func(opt int) int { return func(n int) int { start := time.Now() ret := inner(n) fmt.Println("time spent:", time.Since(start).Seconds()) 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)) }
结果:
=== RUN TestFn
time spent: 1.0000582
--- PASS: TestFn (1.00s)
func_test.go:32: 1
func_test.go:34: 10
PASS
待续-------------------------------------------------
以上是关于Go函数的主要内容,如果未能解决你的问题,请参考以下文章
解决go: go.mod file not found in current directory or any parent directory; see ‘go help modules‘(代码片段
npm : 无法加载文件 D:softcodeProcess ode ode_global pm.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.micr +(代码片段