Golang // 学习笔记 函数篇

golang cyanprobe 8年前 (2016-07-22) 3223次浏览 已收录 0个评论

前言:

函数构成代码的逻辑执行结构。在Go语言中,函数的基本组成为:关键字func,函数名,参数列表,返回值,函数体和返回语句。声明:如果发现本文和七牛大神的GO宝典很像,纯属雷同,因为毕竟是笔记。代码可能一样,不过全是手敲验证 = =。

正文

函数定义:

在此我们用一个加法函数来进行案例说明:

package main
import (
 "errors"
 "fmt"
)
func main() {
 z, i := Add(1, -9)
 fmt.Print(z, i)
}
func Add(a int, b int) (ret int, err error) {
 if a < 0 || b < 0 { //假设只支持正数加法
 err = errors.New("Should be non-negative numbers")
 return
 }
 return a + b, nil //支持多重返回值
}

注意err除的return自动返回err,而ref返回默认值0.此程序返回:0 Should be non-negative numbers.

函数调用

Go语言中参数和函数名字大小写,代表其可见性,大写在包外可见,小写仅在包内可见。
假设Add在math方法中那么调用方式为:math.Add(1,2)

不定参数:

不定参数是指函数传入的参数个数为不定数量,为了做到这一点,需要先把参数定义为不定参数类型。

func myfunc(args ...int){//让我想起了es6的扩展运算符
//接受不定个数参数全部为int类型
}

不定参数的传递可以原样传递args…也可直接进行数组切片 args[1:]… 事实上,其本身就是一个数组切片。
任意类型的不定参数:

func Print(format,args...interface{}){
//使用interface{}传递任意类型数据是Go语言的惯例做法,使用interface{}是类型安全的,具
//体要后面学习到
}

多返回值问题:

func(num int)Test(a,b int)(z int,m string)//假设对z进行赋值,直接写return之后,会自动匹配到z,而error则返回默认值。

可以使用匿名函数,可以直接赋值给变量去执行。

    func(arge a) int {//类似于js的即可执行函数。
        var i int =5
        fmt.Printf(i+a)
        return i
    }(3)//跟参数列表

后记:

接下来要学习错误处理章节,其实上面还有包含闭包的内容,由于我对闭包理解不够透彻,暂时就跳过了 = =。


CyanProbe , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Golang // 学习笔记 函数篇
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址