go语言匿名函数的使用
packagemain
import(
"fmt"
"go_code/chapter02/funinit/utils"
)
//3、全局匿名函数
var(
Fun1=func(n1int,n2int)int{
returnn1*n2
}
)
//init函数,通常在init函数中完成初始化工作
funcmain(){
//1、在定义匿名函数时就直接调用,这种方式匿名函数只能调用一次
res1:=func(n1int,n2int)int{
returnn1+n2
}(10,20)
fmt.Println("res1=",res1)
//2、a的数据类型就是函数类型,此时我们可以通过a完成调用
a:=func(n1int,n2int)int{
returnn1+n2
}
res2:=a(100,1000)
fmt.Println("res2=",res2)
res3:=Fun1(100,1000)
fmt.Println("res3=",res3)
fmt.Println("main......")
fmt.Println("Ageisvalue",utils.Age,"Nameisvalue",utils.Name)
}
没什么好说的,见一个,熟悉一个:
packagemain
import(
"fmt"
)
funcmain(){
func(){
fmt.Printf("func1\n")
}()
func(xint){
fmt.Printf("func2,xis%d\n",x)
}(2)
a:=func(xint)int{
fmt.Printf("func3,xis%d\n",x)
return5
}
fmt.Println(a(3))
fmt.Printf("%T\n",func(){
fmt.Printf("func1\n")
})
fmt.Printf("%T\n",func(xint){
fmt.Printf("func2,xis%d\n",x)
})
fmt.Printf("%T\n",a)
}
结果:
func1
func2,xis2
func3,xis3
5
func()
func(int)
func(int)int
继续看:
packagemain
import(
"fmt"
)
funcmain(){
test(func(xstring){
fmt.Println(x)
})
}
functest(ffunc(string)){
f("hello")
}
结果:hello
但如下都错误,想想为什么:
packagemain
import(
"fmt"
)
funcmain(){
func(){
fmt.Printf("func1\n")
}
}
packagemain
import(
"fmt"
)
funcmain(){
test(funcg(xstring){
fmt.Println(x)
})
}
functest(ffunc(string)){
f("hello")
}
最后,看看下面两个正确程序的:
packagemain
import(
"fmt"
)
varx="hello"
funcmain(){
test(func(x*string){
*x="world"
})
fmt.Println(x)
}
functest(ffunc(*string)){
}
packagemain
import(
"fmt"
)
funcmain(){
vars1="hello"
vars2="world"
test(func(x*string,y*string){
*x+="_123"
*y+="_456"
},&s1,&s2)
fmt.Println(s1,s2)//hello_123world_456
}
functest(ffunc(*string,*string),s1*string,s2*string){
f(s1,s2)
}
packagemain
import(
"fmt"
)
vars1="hello"
vars2="world"
funcmain(){
test(func(x*string,y*string){
*x+="_123"
*y+="_456"
})
fmt.Println(s1,s2)//hello_123world_456
}
functest(ffunc(*string,*string)){
f(&s1,&s2)
}
不多说。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对毛票票的支持。如果你想了解更多相关内容请查看下面相关链接