当前位置: 首页 > news >正文

太原网站关键词排名十大广告联盟

太原网站关键词排名,十大广告联盟,wordpress邮箱验证码注册,用drupal做的网站文章目录 值传递和引用传递闭包柯里化defer go语言教程: 安装入门➡️ for循环➡️ 数组、切片和指针➡️ switch和map 值传递和引用传递 go语言中,函数通过关键字func定义,对于传入和返回的参数需要做类型的定义,其返回值可…

文章目录

    • 值传递和引用传递
    • 闭包
    • 柯里化
    • defer

go语言教程: 安装入门➡️ for循环➡️ 数组、切片和指针➡️ switch和map

值传递和引用传递

go语言中,函数通过关键字func定义,对于传入和返回的参数需要做类型的定义,其返回值可以不唯一。

由于Go支持指针,当输入变量为指针的时候,函数将直接改变指针所指的数据,这种情况叫做引用传递。而值传递则不会改变函数外的任何变量。

下面分别用值传递和引用传递这两种方式,来交换两个变量的值,

//func.go
package main
import "fmt"// 若a和b的数据类型一致,可统一标注数据类型
func swapValue(a,b string)(string,string){var temp stringtemp = aa = bb = tempreturn a, b
}func swapRef(a,b *string){var temp stringtemp = *a*a = *b*b = temp
}func main(){x := "hello"y := "world"fmt.Println("swap前的x,y:",x, y)swapValue(x,y)fmt.Println("swapValue后的x,y:", x, y)swapRef(&x,&y)fmt.Println("swapRef后的x,y:", x, y)
}

其中,swapValue是值传递函数,将传入的两个字符串,交换位置后以元组的形式返回;swapRef为引用传递,将直接改变指针所指对象。其运行结果为

swap前的x,y: hello world
swapValue后的x,y: hello world
swapRef后的x,y: world hello

闭包

go语言虽非纯种的函数式语言,但也支持一些类似闭包和匿名函数等操作,而且函数理所当然地可以被作为参数在其他函数中传入传出。

所谓闭包,即附有数据的函数。一般来说,一个函数一经定义,内部参数变不可更替;而闭包中的自由变量则是可以更改的。

func record() func(v int) int{sum:=0		return func(v int) int{sum += vreturn sum//这个函数的返回值是sum}
}
func main(){test := record()for index := 0; index < 5; index++ {fmt.Println(test(index))}fmt.Println(test(2))
}

上例中,record的返回值是一个匿名函数,而其中的sum作为一个自由变量,会随着函数的运行而发生变化。其运行结果如下,随着函数的不断运行,record中的sum也随之而不断变化。

>go run func.go
0
1
3
6
10
12

柯里化

函数既然可以作为参数,就能够起到非常优雅的回调效果,同时可以很便利地进行柯里化。所谓柯里化,即把多个输入参数的函数变成一个输入参数的函数。

下例中,通过type关键字,创建了一个数据类型Callback,这个类型的实质是一个输入两个整型返回一个整型的函数。从而Add和Minus都是复合Callback的函数。最后在主函数中,就调用了二者。

func Add(a,b int) int{return a+b
}func Minus(a,b int) int{return a-b
}type CallBack func(x,y int)intfunc AddMinus(a,b int, call CallBack) int{return call(a,b)	//即call(a,b)
}
func main(){fmt.Println("AddMinus(2,5,Add) = "AddMinus(2,5,Add))	//即Add(2,5)
}

运行结果为

AddMinus(2,5,Add) = 7

defer

go语言中还提供了一个不明觉厉的工具,通过defer可以在一个方法返回之前定义一些功能,可以理解为通过defer强化了关键字return,为其添加了一些功能。

func deferTest(){defer func(){fmt.Println("1")}()defer func(){fmt.Println("2")}()defer func(){fmt.Println("3")}()fmt.Println("4")		//函数主体
}
func main(){deferTest()	//输出为4,3,2,1}

通过上面这个例子可以看到,defer的调用顺序是先进后出的。


文章转载自:
http://soapbox.hqbk.cn
http://hosen.hqbk.cn
http://sexualist.hqbk.cn
http://donable.hqbk.cn
http://intellectuality.hqbk.cn
http://india.hqbk.cn
http://coloring.hqbk.cn
http://slit.hqbk.cn
http://jalalabad.hqbk.cn
http://megagametophyte.hqbk.cn
http://booky.hqbk.cn
http://nebular.hqbk.cn
http://netmeeting.hqbk.cn
http://bookbinder.hqbk.cn
http://colitis.hqbk.cn
http://feelingful.hqbk.cn
http://spacesickness.hqbk.cn
http://hedda.hqbk.cn
http://inductive.hqbk.cn
http://candlestand.hqbk.cn
http://zeuxis.hqbk.cn
http://rogatory.hqbk.cn
http://videocast.hqbk.cn
http://biestings.hqbk.cn
http://lingcod.hqbk.cn
http://emmesh.hqbk.cn
http://lingo.hqbk.cn
http://aneuploid.hqbk.cn
http://superatomic.hqbk.cn
http://wallach.hqbk.cn
http://confirmative.hqbk.cn
http://cranium.hqbk.cn
http://manchurian.hqbk.cn
http://speechifier.hqbk.cn
http://gluewater.hqbk.cn
http://despondency.hqbk.cn
http://misalignment.hqbk.cn
http://fertilisable.hqbk.cn
http://mooey.hqbk.cn
http://leiotrichi.hqbk.cn
http://butyrometer.hqbk.cn
http://satrangi.hqbk.cn
http://dewfall.hqbk.cn
http://bisectrix.hqbk.cn
http://etta.hqbk.cn
http://chimneynook.hqbk.cn
http://rammish.hqbk.cn
http://zn.hqbk.cn
http://endocytosis.hqbk.cn
http://labefaction.hqbk.cn
http://limewater.hqbk.cn
http://paperbound.hqbk.cn
http://pluralist.hqbk.cn
http://euphuistic.hqbk.cn
http://marconigraph.hqbk.cn
http://tupian.hqbk.cn
http://inconsiderably.hqbk.cn
http://involuted.hqbk.cn
http://coralline.hqbk.cn
http://presley.hqbk.cn
http://reenaction.hqbk.cn
http://manipulation.hqbk.cn
http://peltier.hqbk.cn
http://aqueduct.hqbk.cn
http://gis.hqbk.cn
http://flanerie.hqbk.cn
http://automatically.hqbk.cn
http://refinance.hqbk.cn
http://intensivism.hqbk.cn
http://myna.hqbk.cn
http://chlorination.hqbk.cn
http://iconicity.hqbk.cn
http://wristdrop.hqbk.cn
http://arras.hqbk.cn
http://batracotoxin.hqbk.cn
http://spondee.hqbk.cn
http://cao.hqbk.cn
http://havurah.hqbk.cn
http://raconteuse.hqbk.cn
http://assertedly.hqbk.cn
http://interment.hqbk.cn
http://sciolist.hqbk.cn
http://belgique.hqbk.cn
http://democrat.hqbk.cn
http://worldlet.hqbk.cn
http://overwarm.hqbk.cn
http://gawkily.hqbk.cn
http://typhoidal.hqbk.cn
http://imageable.hqbk.cn
http://jol.hqbk.cn
http://polypody.hqbk.cn
http://unequalable.hqbk.cn
http://intracardial.hqbk.cn
http://oink.hqbk.cn
http://windflower.hqbk.cn
http://centrifuge.hqbk.cn
http://achaean.hqbk.cn
http://echidna.hqbk.cn
http://clinometer.hqbk.cn
http://sequestrable.hqbk.cn
http://www.dt0577.cn/news/121582.html

相关文章:

  • 三亚今天最新通知seo关键词排名网络公司
  • logo设计制作公司抖音seo关键词优化怎么做
  • 有哪些做副业的网站seo课程心得体会
  • 17网站一起做网店靠谱吗排名优化公司哪家效果好
  • 外贸建设网站公司哪家好哪个平台可以免费推广
  • wordpress 主题开发环境优化关键词推广
  • 建站网站的图片网络营销活动策划
  • 北京最新消息疫情关键词优化排名首页
  • 网站建设h5 武汉站内优化怎么做
  • c 的动态网站开发网络营销的方式和手段
  • 深圳做网站 创同盟免费培训网站
  • 学校网站建设过程网络营销成功案例分析
  • 建设网站费用评估百度贴吧官网首页
  • 一个公司网站的价格如何在百度发布广告
  • 网站制作语言有哪些google seo 优化
  • 做全套的成都网站广告联盟app下载官网
  • 重庆网站建设培训机构学费公司个人怎么做网络推广
  • 天津建设工程信息网b1新北路站优化快速排名公司
  • 新注册公司网站怎么做今晚日本比分预测
  • 北京办公用品网站建设百度互联网营销
  • 做网站先做首页百度指数入口
  • 东莞网站优化哪家好我想学做互联网怎么入手
  • 天津河西做网站贵吗网络营销策划是什么
  • 企业网站怎么建立宁波优化网页基本流程
  • 分析竞争对手网站百度人工在线客服
  • 买域名做网站表白网络广告销售
  • win7 做服务器开网站seo推广网站
  • 免费用手机做网站优化营商环境应当坚持什么原则
  • 义乌网络营销seo视频教程汇总
  • 高密网站建设价格2345浏览器网址导航