在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
艺多不压身,学习一下最近蛮火的Go语言,整理一下笔记。相关Code和笔记也放到了Git上,传送门。 函数 -- 一等公民
函数 可变参数及延迟运行 可变参数 func sum(ops ... int) int { s := 0 for _, op := range ops { s += op } return s }
延迟执行函数 defer 类似于Finnaly
func TestDefer(t *testing.T){ defer func() { /*这个内联函数直到TestDefer执行完毕,返回前才会执行。 通常用于清 理资源,释放锁等功能*/ t.Log("Clear resources") }() t.Log("Started") panic("Fatal error") //defer 仍会执行 //panic是Go中程序异常中断,抛出致命错误 }
附上代码: package func_test import ( "testing" "math/rand" "time" "fmt" ) // 函数多个返回值 func returnMultiValues() (int, int) { return rand.Intn(10), rand.Intn(20) } func slowFun(op int) int{ time.Sleep(time.Second *1) fmt.Println("In SlowFun, the parameter is", op) return op } // 传递一个函数进来 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()) return ret } } func TestFn(t *testing.T) { // 函数多个返回值 a, b := returnMultiValues() t.Log(a, b) // 计算函数运行时间 tsSF := timeSpent(slowFun) t.Log(tsSF(10)) } func Sum (ops ... int) int { ret := 0 for _, s := range ops { ret += s } return ret } func TestVarParam(t *testing.T) { t.Log(Sum(1,2,3,4)) t.Log(Sum(5,6,7,8,9)) } func Clear() { fmt.Println("Clear resources in Clear function.") } func TestDefer(t *testing.T){ defer func() { //这个内联函数直到TestDefer执行完毕,返回前才会执行。 通常用于清理资源,释放锁等功能 defer Clear() t.Log("Clear resources") }() t.Log("Started") panic("Fatal error") //defer 仍会执行 //panic是Go中程序异常中断,抛出致命错误 }
|
请发表评论