Golang学习笔记-函数

aside section ._1OhGeD · · 499 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

Go函数定义格式如下:

func function_name( [parameter list] ) [return_types] {
   函数体
}

例如:

func add(n1, n2 int) int{
    return n1 + n2
}

Go函数可以返回多个值,这个时候返回值类型要用括号括起来,例如:

func div(n1, n2 int) (int,int){
    return n1 / n2, n1 % n2
}

Go函数可以给返回值命名,这个时候即使只有一个返回值也要用括号括起来,例如:

func add(n1, n2 int) (result int){
    result= n1 + n2
    return
}
func div(n1, n2 int) (result int,remainder int){
    result= n1 / n2
    remainder= n1 % n2
    return
}

Go可以很灵活的创建函数,并作为另外一个函数的实参:

type getTowNumberResultFunc func(int,int) int

func add(n1, n2 int) int{
    return n1+ n2
}

func printResult(n1, n2 int,f getTowNumberResultFunc){
    println(f(n1, n2))
}

func main() {
    printResult(10,20,add);
    myGetReslut := func(n1, n2 int) int {
        return n1 * n2
    }
    printResult(10,20,myGetReslut)

}

Go支持匿名函数,可作为闭包,匿名函数是一个"内联"语句或表达式,匿名函数的优点在于可以直接使用函数内的变量。

type getTowNumberResultFunc func(int,int) int

func getAddFunc() func(int,int) int{
    initValue:=20
    return func(n1, n2 int) int{
        return initValue+ n1 + n2
    }
}

func printResult(n1, n2 int,f getTowNumberResultFunc){
    println(f(n1, n2))
}

func main() {
    printResult(10,20,getAddFunc());

}

Go没有面向对象,但却可以给指定类型添加方法,格式如下:

func (variable_name variable_data_type) function_name() [return_type]{
   /* 函数体*/
}

Go中的方法就是一个包含了接受者的函数,接受者可以是类型的一个值或是一个指针,类似于C++中的this。

type Person struct{
    height int
}

func (person Person) printHeight(){
    println(person.height)
}


func main() {
    person:=Person{100}
    person.printHeight()
}


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:aside section ._1OhGeD

查看原文:Golang学习笔记-函数

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

499 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传