标签:add res func col 特点 int for ... 拷贝
1 golang函数特点
1.不支持重载,一个包中不能有2个同名的函数
2.函数是一等公民,函数也是一种类型,一个函数可以赋值给变量
3.匿名函数
4.多返回值
2 函数参数传递方式
1.值传递
2.引用传递
需要注意的是,无论是值传递还是引用传递,传递的的都是变量的副本,不过值传递是值的拷贝,引用传递是地址的拷贝,一般来说,地址拷贝更为高效,而值拷贝取决于拷贝的对象的大小,对象越大,则性能越低
注意:map,slice,chan,指针,interface默认是引用方式传递
3 defer 在函数执行结束前执行,一般用于释放资源
//defer:在函数执行结束前执行,一般用于释放资源 func read() { conn,err := openConn() defer func(){ if conn!=nil{ conn.Close() } }() }
package main import "fmt" func main() { //fmt.Println(test05(10, 5)) //fmt.Println(add2(1,2,3,4,5)) fmt.Println(contact("hello"," ","world")) } //命名返回值的名字 func test05(a, b int) (sum int) { sum = a + b return } //可变参数练习 func add2(a int, arg... int) (res int) { res += a for _, v := range arg { res += v } return } func contact(arg...string)(res string) { for _,v :=range arg{ res+=v } return } func test01(a int, b int) { } func test02(a int, b int) int { return 1 } func test03(a int, b int) (int, int) { return 1, 1 } func test04(a, b int) (int, int) { return 1, 1 }
package main import "fmt" func main() { var( a=5 b=10 c=add//函数赋值给变量 ) res := test(c,a,b) fmt.Println(res) } type add_func func(int,int) int func add(a,b int) int{ return a+b } func test(op add_func,a,b int) int{ return op(a,b) }
标签:add res func col 特点 int for ... 拷贝
原文地址:https://www.cnblogs.com/jec1999/p/9868068.html