Go 语言可变参数和defer 电脑版发表于:2021/1/13 16:28 ![go数据类型](https://img.tnblog.net/arcimg/hb/0dd243ae49394f12beed84237bfee1a3.jpg "go数据类型") >#Go 语言可变参数和defer [TOC] tn>什么是可变参数,相当于c#的params一样,可以传多个值到函数中。我们来做一个简单的求和举例 ```go 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)) } ``` ![](https://img.tnblog.net/arcimg/hb/0258c815d91a420fb26c137a15edfa3e.png) defer 函数 ------------ tn>defer 相当于c#和java中的finally,它会在该方法执行完后执行,不论你是对的还是错的 ```go func Clear() { fmt.Println("defer finish") } func TestDefer(t *testing.T) { defer Clear() fmt.Println("Start") panic("err") } ``` ![](https://img.tnblog.net/arcimg/hb/419b14cfe8cd454e87955e53943f467a.png)