目录
golang的匿名函数和普通函数的区别补充:Golang的匿名函数1.匿名函数介绍2.匿名函数使用方式2.1定义时直接调用2.2将匿名函数赋值给一个变量2.3定义全局匿名函数golang的匿名函数和普通函数的区别
匿名函数是不具名的函数,可以在不定义函数名的情况下直接使用,通常用于函数内部的局部作用域中。而普通函数则是通过定义函数名,在任何地方都可以直接调用的函数。
在 Go 中,匿名函数与普通函数有以下区别:
例如,以下代码使用了匿名函数:
package main import "fmt" func main() { func() { fmt.Println("Hello, World!") }() }
在这个例子中,我们定义了一个匿名函数,并在函数定义后立即调用。该匿名函数没有名称,没有参数,没有返回值,仅仅打印 “Hello, World!”。由于该函数是在 main 函数内部定义的,因此只能在 main 函数内部调用,外部无法访问。
(资料图片)
匿名函数可以访问并修改外部变量,即闭包特性:
s := []string{"我喜欢", "邓文怡"} func(){ s[1] = "编程" s = append(s, "和", "写作") }() for _, v := range s { print(v, " ") } // 我喜欢 编程 和 写作
在这个例子中,我们定义了一个字符串切片 s,包含两个元素 “我喜欢” 和 “邓文怡”。然后定义了一个匿名函数,并在函数定义后立即调用。在该匿名函数中,我们将 s 切片的第二个元素修改为 “编程”,并将 “和” 和 “写作” 两个元素添加到 s 切片的末尾。最后,通过使用 range 循环遍历 s 切片的每个元素,并将其打印出来。因此,打印输出的结果为 “我喜欢 编程 和 写作”。值得注意的是,由于该匿名函数是在 main 函数内部定义的,因此只能在 main 函数内部调用,外部无法访问。
由于该匿名函数是在 main 函数内部定义的,因此可以访问和修改 s 切片。在该匿名函数定义时,它引用了变量 s,因此它形成了一个闭包,即该匿名函数“捕获”了在其定义范围内声明的变量 s。所以,在匿名函数中修改 s 切片的值也影响到了 main 函数中 s 切片的值。这就是匿名函数的闭包特性:函数可以访问并修改其定义范围内的变量。
补充:Golang的匿名函数
golang中的匿名函数 golang中的匿名函数1.匿名函数介绍2.匿名函数使用方式2.1定义时直接调用2.2将匿名函数赋值给一个变量2.3定义全局匿名函数
golang中的匿名函数
1.匿名函数介绍
golang支持匿名函数,如果某些函数仅想在特定位置使用一次,那么可以考虑使用匿名函数。
匿名函数也可以实现多次调用。
2.匿名函数使用方式
2.1定义时直接调用
示例代码:
package main import ( "fmt" ) func main() { fmt.Println("Hello World!"); //匿名函数使用方式1:定义时直接调用。 //(num1 int,num2 int),形参前不写函数名,并在函数后直接调用。 res := func (num1 int,num2 int) int { return num1 + num2 }(2,3) fmt.Printf("res的值为:%v",res) }
结果:
2.2将匿名函数赋值给一个变量
示例代码:
package main import ( "fmt" ) func main() { fmt.Println("Hello World!"); //匿名函数使用方式2:将匿名函数赋值给变量,使用变量调用。 add := func (num1 int,num2 int) int { return num1 + num2 } //通过函数变量 调用函数。 res := add(2,3) fmt.Printf("add的类型为:%T,res的值为:%v",add,res) }
结果:
add的类型为 函数 func(int,int) int 类型。
2.3定义全局匿名函数
package main import ( "fmt" ) //匿名函数使用方式3:将函数赋值给全局变量。 var Add = func (num1 int,num2 int) int{ return num1 + num2 } func main() { fmt.Println("Hello World!"); res := Add(2,3) fmt.Printf("Add全局变量的类型:%T,res的类型:%T,res的值为:%v",Add,res,res) }
结果:
到此这篇关于golang的匿名函数和普通函数的区别的文章就介绍到这了,更多相关go匿名函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
关键词:
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?