实践出真理

  1. package main
  2. import (
  3. "io"
  4. "log"
  5. "os"
  6. )
  7. // 多个参数, 一个返回值 int 类型的函数
  8. func func1(vString string, vInt int) int {
  9. return vInt
  10. }
  11. // 多个参数, 多个返回值 匿名返回值
  12. func func2(vBool bool, vInt int) (bool, int) {
  13. return vBool, vInt
  14. }
  15. // 多个参数, 多个返回值,有形参名称返回值
  16. func func3(vBool bool, vInt int) (r1 bool, r2 int) {
  17. log.Println("vBool=", vBool)
  18. log.Println("vInt=", vInt)
  19. log.Println("打印形参默认值")
  20. log.Println("r1=", r1) // false
  21. log.Println("r2=", r2) // 0
  22. r1 = vBool
  23. r2 = vInt
  24. return
  25. }
  26. // 多个参数, 多个返回值,有形参名称返回值, 如果变量类型一致, 可以简写
  27. // 在这里可以注意到, 这个方法名也可以 匿名, 匿名意味着这个方法定义只是为了保留某些旧函数, 不会被使用
  28. func _(vBool bool, vInt int) (r1, r2 int) {
  29. return
  30. }
  31. func main() {
  32. log.SetOutput(io.MultiWriter(os.Stdout))
  33. log.SetFlags(log.Lshortfile)
  34. r1 := func1("vSrting", 100)
  35. log.Println(r1)
  36. // 接受两个返回值
  37. r2, r3 := func2(true, 101)
  38. log.Println(r2, r3)
  39. // 丢弃一个返回值, 使用匿名变量 _
  40. _, r4 := func3(true, 103)
  41. log.Println(r4)
  42. }

返回

  1. main.go:39: 100
  2. main.go:43: true 101
  3. main.go:21: vBool= true
  4. main.go:22: vInt= 103
  5. main.go:24: 打印形参默认值
  6. main.go:25: r1= false
  7. main.go:26: r2= 0
  8. main.go:47: 103