go 函数 学习笔记

水滴石川1 · · 509 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

什么是函数

有输入、输出,用来执行特定功能的代码块

func functionnname([partmeternam type]) [return type] {
  // function body
}


函数的几种类型


  • 无参数返回值的函数

  • 有参数返回值的函数 

  • defer 语句 


1、无参数返回值的函数


package main
import "fmt"


func functiontest1(a,b int) int  {
    return a + b 
    // 输出 15
}

func main()  {
    sum1 :=functiontest1(12,3)
    fmt.Println(sum1)
}

 2、有参数返回值的函数

  多返回值


package main
import "fmt"

func functiontest2(a,b int) (int,int) {
    sum := a + b 
    sub := a - b
    return sum,sub
}

func main()  {
    sum,sub := functiontest2(13,4)
    fmt.Printf("sum=%d\n sub=%d",sum,sub)
    // 输出
    sum=17
    sub=9
}


对返回值进行命名

package main
import "fmt"

func functiontest3(a,b int) (sum int,sub int) {
    sum = a + b 
    sub = a - b
    return 
}

func main()  {
  
    sum,sub := functiontest3(30,40)
    fmt.Printf("sum=%d\n sub=%d",sum,sub)
    // 输出 
  sum=70
  sub=-10

}

 _标识符  不需要输出的可以使用 _ 表示

package main
import "fmt"

func functiontest4(a,b int) (sum int,sub int) {
    sum = a + b 
    sub = a - b
    return 
    
}

func main()  {
   sum,_ := functiontest4(21,10)
    fmt.Printf("sum=%d",sum)
    // 输出
    sum=31    
}


可变参数1 ,传递数组args 

func functiontest5(a...int) (sum int)  {

    for i := 0; i < len(a); i++ {
        sum =sum + a[i]
    }
    fmt.Println(sum)
    return sum
    
}

func main()  {

functiontest5(11,12,9)
// 输出 32

}


可变参数2 

package main
import "fmt"

func functiontest6(a int, b ...int) (sum int, sub int) {
    s1 := 0
    for i := 0; i < len(b); i++ {
        s1 = s1 + b[i]
    }
    sum = s1 + a 
    sub = s1 - a 
    return sum,sub
}

func main()  {
sum,sub := functiontest6(1,2,311,4)
fmt.Println(sum,sub)
// 输出
318 316
}
  • defer 

defer 的作用: 在函数中,程序员经常需要创建资源(比如:数据库连接、文件句柄、锁等,为了在函数执行完 毕后,及时的释放资源,Go 的设计者提供 defer (延时机制)


单个defer  先进后出

package main
import "fmt"

func defer_test1(a int ,b...int) (sum int,sub int) {
    defer fmt.Println("deffer")
   for i := 0; i < len(b); i++ {
       fmt.Println(b[i])
   }
  return
}

func main()  {

defer_test1(1,123,23,45,6)
// 输出
123
23
45
6
deffer
}

多个deffer 

func defer_test1(a int ,b...int) (sum int,sub int) {
    defer fmt.Println("deffer1")
    defer fmt.Println("deffer2")
    defer fmt.Println("deffer3")
   for i := 0; i < len(b); i++ {
       fmt.Println(b[i])
   }
  return
}

func main()  {

defer_test1(1,123,23,45,6)
// 输出
123
23
45
6
deffer3
deffer2
deffer1

}







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

本文来自:51CTO博客

感谢作者:水滴石川1

查看原文:go 函数 学习笔记

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

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