Go语学习笔记 - 函数 | 从零开始Go语言

简介: Go语学习笔记 - 函数 | 从零开始Go语言

学习笔记,写到哪是哪。


1、函数定义

函数的定义和java一样,使用{}进行包裹,并且要明确入参类型以及返回类型。


样例代码如下:


func min(num1, num2 int) int {
  if num1 <= num2 {
  return num1
  } else {
  return num2
  }
}
func main() {
  fmt.Printf("max = %d\n", min(10, 12))
}

执行结果


max = 10


2、多值返回

和Python一样,可以多值返回。


样例代码如下


func swap(num1, num2 int) (int, string) {
  return num1 + num2, "haha"
}
func main() {
  a, b := swap(10, 12)
  fmt.Printf("swap = %d - %v\n", a, b)
}

执行结果


swap = 22 - haha


3、引用传递

可以将参数的引用地址传递到函数,这样操作会影响到实际参数。


样例代码如下


func swap1(num1, num2 *int) {
  var temp int
  temp = *num1
  *num1 = *num2
  *num2 = temp
}
func main() {
  c, d := 10, 20
  swap1(&c, &d)
  fmt.Printf("swap1 c=%d,d=%d\n", c, d)
}

执行结果


swap1 c=20,d=10


4、函数作为实参使用

和python一样,可以在方法内部定义函数。


样例代码如下


func method(num1 int) int {
  getMax := func(x, y int) int {
  if x > y {
    return x
  } else {
    return y
  }
  }
  a := num1 - 10
  b := getMax(num1, a)
  fmt.Printf("value = %d\n", b)
  return b
}
func main() {
  fmt.Printf("method = %d\n", method(20))
}

执行结果


value = 20                        

method = 20


5、匿名函数

函数返回匿名函数,形成闭包。


样例代码如下


//匿名函数
func anonymous(num int) func() int {
  var a int
  a = num
  return func() int {
  a += 1
  return a
  }
}
func main() {
  flagNum := anonymous(100)
  fmt.Printf("1 -> %d\n", flagNum())
  fmt.Printf("2 -> %d\n", flagNum())
  fmt.Printf("3 -> %d\n", flagNum())
  flagNum1 := anonymous(18)
  fmt.Printf("4 -> %d\n", flagNum1())
  fmt.Printf("5 -> %d\n", flagNum1())
}

执行结果


1 -> 101                          

2 -> 102                          

3 -> 103                          

4 -> 19                            

5 -> 20


小结

整体上都比较好理解。


相关文章
|
IDE Java 测试技术
Go语学习笔记 - 环境安装、基础语法 | 从零开始Go语言
Go语学习笔记 - 环境安装、基础语法 | 从零开始Go语言
Go语学习笔记 - 环境安装、基础语法 | 从零开始Go语言
|
Go Python
Go语学习笔记 - 变量、常量 | 从零开始Go语言
Go语学习笔记 - 变量、常量 | 从零开始Go语言
Go语学习笔记 - 变量、常量 | 从零开始Go语言
|
Java Go Python
Go语学习笔记 - 函数 | 从零开始Go语言
Go语学习笔记 - 函数 | 从零开始Go语言
|
Java 编译器 Go
Go语学习笔记 - 数组 | 从零开始Go语言
Go语学习笔记 - 数组 | 从零开始Go语言
Go语学习笔记 - 结构体 | 从零开始Go语言
Go语学习笔记 - 结构体 | 从零开始Go语言
|
Java Go iOS开发
Go语学习笔记 - 语言接口 | 从零开始Go语言
Go语学习笔记 - 语言接口 | 从零开始Go语言
|
存储 Java Go
Go语学习笔记 - 运算符 | 从零开始Go语言
Go语学习笔记 - 运算符 | 从零开始Go语言
Go语学习笔记 - 条件语句 | 从零开始Go语言
Go语学习笔记 - 条件语句 | 从零开始Go语言
|
Linux Go Python
Go语学习笔记 - 文件操作(二) | 从零开始Go语言
Go语学习笔记 - 文件操作(二) | 从零开始Go语言
Go语学习笔记 - 文件操作(一) | 从零开始Go语言
Go语学习笔记 - 文件操作(一) | 从零开始Go语言