前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >go基础入门(三)

go基础入门(三)

作者头像
大话swift
发布2019-07-12 15:04:11
3050
发布2019-07-12 15:04:11
举报
文章被收录于专栏:大话swift

接着上篇的尾部,我们今天说一下go的函数。说到函数这个东西我们会问那么我们什么是函数呢?其实函数通俗来讲就是大任务划分出小人物具有完整逻辑的小的调度单元。那么函数有什么特性呢?go中有哪些函数呢?怎么声明和使用呢?带着这些疑问我们来开始今天的内容…

1 怎么声明一个函数

对于函数往往是个具有完整的逻辑,为了完成大任务中的一小部分功能而存在。因此往往需要呈上启下,那么怎么达到承上启下的作用--接受传入信息和返回处理结果来玩啦。

代码语言:javascript
复制
func funcname(context )returnvalues{
  
}

上面是我们的函数声明的为代码,下面我们举例说明一下:

代码语言:javascript
复制
func sum(a int, b int) int {
  return a + b
}

上栗是一个很简的加法运算例子,a, b 作为从外部传进来的数据,然后返回一个结果:sum(1,2)

2 多返回值

上栗中我们做的加法运算,只是简单的返回一个单一的值?那么假若处理之后有一系列的值需要返回怎么办呢?go还很人性化滴

代码语言:javascript
复制
func fetch(url string) (interface{}, int) {
  value := 123
  code := 200
  return value, code
}

上栗中我们模拟了一个网络请求(省略了过程),然后返回了数据和状态码:value,code := fetch("") 是不是感觉返回多值的函数十分有用,变大能力更加强大。除此之外go还允许对返回的值进行设置变量名称

代码语言:javascript
复制
func fetch(url string) (value interface{}, code int) {
  value = 123
  code = 200
  return value, code
}

自习对比一下上面两个例子,会发下声明了返回值名称的函数,在内部返回可以作为变量来使用……

3 匿名函数

可以提供给外部调用的函数,我们通常是需要提供名称参数等一系列声明的,但是有些时候我们不想提供出去供调用,那么匿名函数就诞生啦。那么它有什么特性呢?特性就是没有名字

代码语言:javascript
复制
//声明
inner  := func(a int ) int {
    return a
  }
  //调用
  inner(123)

‍上栗虽然简单但是五脏俱全---声明一个匿名函数(有返回值,有传入参数)

4 可变参数

之前我们的函数参数序列和个数都是写死无法改变的,那么我们有是需要变化的参数怎么办呢?例如给函数传递n个数怎么处理?(当然了使用数组也是可以的)go为我们提供了可变话传参的公共能

代码语言:javascript
复制
func letter(a ...string) {
  for index, v := range a {
    fmt.Println(index, v)
  }
}

看上栗我们可以看出,可变参数是被作为数组来对待的

5 defer函数

函数执行是一个压栈出栈的过程。一旦出栈之后就会被系统慢慢给回收掉。试想一下假如我们在一个函数中动态分配了内存但是我们没有管理它会怎么样,我们打开一个文件没有关闭会怎样,那么我们能否运用函数被回收的过程做一些事情呢?这个想法可定的啦--那就是defer

由于defer会有一个隐藏的问题我们今天就留个尾巴等待下次一块细看,除了defer的运用之外下次我们还会说一说异常和如何进行异常的捕获来是我们的程序更加健壮和任性话

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大话swift 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档