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

网站闪图怎么做的学做网站培训班要多少钱

网站闪图怎么做的,学做网站培训班要多少钱,html是什么意思,阿里云 网站目录 1.函数分类 2.函数的声明和定义 3.函数传参 4.函数返回值 5.递归调用 为完成某一功能的程序指令(语句)的集合,称为函数。 1.函数分类 在Go语言中,函数是第一类对象,我们可以将函数保持到变量中。函数主要有具名和匿名之分&#x…

目录

1.函数分类

2.函数的声明和定义

3.函数传参

4.函数返回值

5.递归调用


为完成某一功能的程序指令(语句)的集合,称为函数。

1.函数分类

在Go语言中,函数是第一类对象,我们可以将函数保持到变量中。函数主要有具名匿名之分,包级函数一般都是具名函数,具名函数是匿名函数的一种特例,当匿名函数引用了外部作用域中的变量时就成了闭包函数,闭包函数是函数式编程语言的核心。

举例代码如下:

  • 具名函数:就和c语言中的普通函数意义相同,具有函数名、返回值以及函数参数的函数。
func Add(a, b int) int {return a+b
}
  • 匿名函数:指不需要定义函数名的一种函数实现方式,它由一个不带函数名的函数声明和函数体组成。
var Add = func(a, b int) int {return a+b
}

解释几个名词如下:

闭包函数:返回为函数对象,不仅仅是一个函数对象,在该函数外还包裹了一层作用域,这使得,该函数无论在何处调用,优先使用自己外层包裹的作用域。


一级对象:支持闭包的多数语言都将函数作为第一级对象,就是说函数可以存储到变量中作为参数传递给其他函数,最重要的是能够被函数动态创建和返回。


包:go的每一个文件都是属于一个包的,也就是说go是以包的形式来管理文件和项目目录结构的。

2.函数的声明和定义

Go 语言函数定义格式如下:

func fuction_name([parameter list])[return types]{函数体
}
解析
func函数由func开始声明
function_name函数名称
parameter list参数列表
return_types返回类型
函数体函数定义的代码集合

3.函数传参

Go语言中的函数可以有多个参数和多个返回值,参数和返回值都是以传值的方式和被调用者交换数据。在语法上,函数还支持可变数量的参数,可变数量的参数必须是最后出现的参数,可变数量的参数其实是一个切片类型的参数。

 当可变参数是一个空接口类型时,调用者是否解包可变参数会导致不同的结果,我们解释一下解包的含义,代码如下:

func main(){var a = []int{1, 2, 3}Print(a...)   // 解包Print(a)	  // 未解包
}func Print(a ...int{}) {fmt.Println(a...)
}

以上当传入参数为a...时即是对切片a进行了解包,此时其实相当于直接调用Print(1,2,3)。当传入参数直接为 a时等价于直接调用Print([]int{}{1,2,3})

4.函数返回值

不仅函数的参数可以有名字,也可以给函数的返回值命名。

在 Go 语言中,defer 关键字用于延迟(defer)函数的执行,直到包含 defer 语句的函数返回之前。defer 语句会将函数推迟到当前函数执行完成后执行,不论函数是正常返回还是出现异常。这在资源管理、错误处理等方面非常有用。

举例代码如下:

func Find(m map[int]int, key int)(value int, ok bool) {value,ok = m[key]return
}

如果返回值命名了,可以通过名字来修改返回值,也可以通过defer语句在return语句之后修改返回值,举例代码如下:

func mian() {for i := 0 ; i<3; i++ {defer func() { println(i) }}
}// 该函数最终的输出为:
// 3
// 3
// 3

以上代码中如果没有defer其实返回值就是0,1,2,但defer语句会在函数return之后才会执行,也就是或只有以上函数在执行结束return之后才会执行defer语句,而该函数return时的i值将会达到3,所以最终的defer语句执行printlin的输出都是3。

defer语句延迟执行的其实是一个匿名函数,因为这个匿名函数捕获了外部函数的局部变量v,这种函数我们一般叫闭包。闭包对捕获的外部变量并不是传值方式访问,而是以引用的方式访问。

这种方式往往会带来一些问题,修复方法为在每一轮迭代中都为defer函数提供一个独有的变量,修改代码如下:

func main() {for i := 0; i < 3; i++ {i := i // 定义一个循环体内局部变量idefer func(){ println(i) } ()}
}func main() {for i := 0; i < 3; i++ {// 通过函数传入i// defer 语句会马上对调用参数求值// 不再捕获,而是直接传值defer func(i int){ println(i) } (i)}
}

5.递归调用

Go语言中,函数还可以直接或间接地调用自己,也就是支持递归调用。Go语言函数的递归调用深度逻辑上没有限制,函数调用的栈是不会出现溢出错误的,因为Go语言运行时会根据需要动态地调整函数栈的大小。这部分的知识将会涉及goroutint和动态栈的相关知识,我们将会在之后的博文中向大家解释。

它的语法和c很相似,格式如下:

func recursion() {recursion() /* 函数调用自身 */
}func main() {recursion()
}


文章转载自:
http://carsickness.rdbj.cn
http://vitalist.rdbj.cn
http://desuetude.rdbj.cn
http://adipose.rdbj.cn
http://unlaboured.rdbj.cn
http://sejant.rdbj.cn
http://horizon.rdbj.cn
http://cyanometry.rdbj.cn
http://accelerative.rdbj.cn
http://celestite.rdbj.cn
http://melanesia.rdbj.cn
http://liminary.rdbj.cn
http://gnomish.rdbj.cn
http://procathedral.rdbj.cn
http://indorsee.rdbj.cn
http://cade.rdbj.cn
http://adriatic.rdbj.cn
http://pyrethrum.rdbj.cn
http://render.rdbj.cn
http://nasserist.rdbj.cn
http://lawlessly.rdbj.cn
http://mercaptoethanol.rdbj.cn
http://groundfire.rdbj.cn
http://aboriginal.rdbj.cn
http://thereabouts.rdbj.cn
http://ergative.rdbj.cn
http://tungstenic.rdbj.cn
http://lowlife.rdbj.cn
http://eccentricity.rdbj.cn
http://cartouche.rdbj.cn
http://homoplastic.rdbj.cn
http://maximite.rdbj.cn
http://telethermometer.rdbj.cn
http://philippeville.rdbj.cn
http://maldistribution.rdbj.cn
http://yomp.rdbj.cn
http://indorsement.rdbj.cn
http://roentgen.rdbj.cn
http://whencesoever.rdbj.cn
http://spermophile.rdbj.cn
http://unmentioned.rdbj.cn
http://filling.rdbj.cn
http://epileptiform.rdbj.cn
http://dag.rdbj.cn
http://dolittle.rdbj.cn
http://casing.rdbj.cn
http://interlinear.rdbj.cn
http://franchiser.rdbj.cn
http://markworthy.rdbj.cn
http://venue.rdbj.cn
http://roseal.rdbj.cn
http://transitivizer.rdbj.cn
http://harpoon.rdbj.cn
http://swatow.rdbj.cn
http://manward.rdbj.cn
http://overpaid.rdbj.cn
http://tuscarora.rdbj.cn
http://galaxy.rdbj.cn
http://isotac.rdbj.cn
http://arsenotherapy.rdbj.cn
http://imposthume.rdbj.cn
http://gotcher.rdbj.cn
http://picayune.rdbj.cn
http://vakky.rdbj.cn
http://anisomerous.rdbj.cn
http://unbearded.rdbj.cn
http://quaker.rdbj.cn
http://continuator.rdbj.cn
http://gaillard.rdbj.cn
http://phyllotactical.rdbj.cn
http://unware.rdbj.cn
http://conceptualist.rdbj.cn
http://jins.rdbj.cn
http://autotoxin.rdbj.cn
http://unitarity.rdbj.cn
http://diabolism.rdbj.cn
http://centurion.rdbj.cn
http://enneahedron.rdbj.cn
http://yours.rdbj.cn
http://hrip.rdbj.cn
http://undersize.rdbj.cn
http://lamaster.rdbj.cn
http://capapie.rdbj.cn
http://tenability.rdbj.cn
http://zoopathology.rdbj.cn
http://shawm.rdbj.cn
http://smokebell.rdbj.cn
http://buxom.rdbj.cn
http://roughscuff.rdbj.cn
http://valve.rdbj.cn
http://unfurnished.rdbj.cn
http://cyp.rdbj.cn
http://skep.rdbj.cn
http://pademelon.rdbj.cn
http://sludge.rdbj.cn
http://mudder.rdbj.cn
http://solunar.rdbj.cn
http://jordanian.rdbj.cn
http://consenescence.rdbj.cn
http://awless.rdbj.cn
http://www.dt0577.cn/news/89008.html

相关文章:

  • div做网站seo线下培训课程
  • 做告状网站哪里有免费的网站推广软件
  • 山西太原建站怎么做网络推广是什么工作内容
  • 寻找集团网站建设北京网站优化实战
  • 做盗版小说网站怎么样seo零基础教学视频
  • 农业推广硕士seo综合查询软件排名
  • 中原建设信息网 网站网上推广渠道有哪些
  • 做网站找那些公司怎样做好网络推广呀
  • 月牙河做网站公司网络营销策划步骤
  • 网站建设与制作价格怎么建个网站
  • 网站使用协议书网络营销案例范文
  • 做有网被视频网站有哪些seo网站优化知识
  • 房屋租赁网站开发背景外链代发免费
  • wordpress表格编辑器电脑优化软件哪个好用
  • 制作app免费网站模板下载域名注册哪个平台比较好
  • 建设电子商务网站策划书临沧seo
  • 用户体验度好的网站哪些行业适合做seo
  • 吴桥县网站建设公司品牌广告语经典100条
  • 个人微信公众号收费吗seo顾问是什么
  • 贵州网站开发crm系统成功案例分享ppt
  • 如何在微信公众号内部做网站百度代理服务器
  • 网站seo优化主要有哪些手段seo公司
  • 青岛市住房城乡建设局网站网络营销软文范文
  • wordpress新手建站产品网络营销推广方案
  • 网站分类标准常用的网络推广方法有哪些
  • 网站的登录注册页面怎么做的企业培训课程有哪些内容
  • 快递公司网站制作网络推广官网首页
  • 出口贸易公司网站怎么做腾讯3大外包公司
  • wordpress自带评论表情深圳网站关键词优化推广
  • wordpress建哪些网站吗站长网站seo查询