GO-函数学习

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

函数的声明

  • go的函数声明通过func这个关键字,params是他的形参设置,result是他的return值
  • 当设置params后调用func必须传入对应函数参数,当设置result后也必须有return,且paramsresult类型符合声明的
func name(params) (result) {
}

// 普通函数的声明
func getMax(num1 int, num2 int) (min int, max int) {
  // 推荐直接赋值给需要return的值
  if num1 > num2 {
    max = num1
    min = num2
  } else {
    max = num2
    min = num1
  }
  return // 每一个函数必须要有return
}

可变参数类型函数

  • 可变参数一般被放置在函数列表的末尾,前面是固定参数列表,当没有固定参数时,所有变量就将是可变参数。
// 可变参数类型
func getArr(a ...int) (length int) {
  length = len(a)
  return
}

// 部分参数是可变参数
func getLen(a int, c ...int) (length int) {
  length = len(c) + a
  return
}

函数的参数传递

函数的参数分为两种:

  • 实际参数(实参):实参的本质是一个变量,它可以是变量名、数组名、常数或者表达式,已实际占用内存空间
  • 形式参数(形参):形参本质是一个名字,不占用内存空间
// 实参
func shiCan(a int, b int) (result int)  {
  result = a + b
  return
}

func main() {
  shiCan(1, 4)
}


// 形参
var a int =  3
var b int = 5

func xingCan(a int, b int) (result int)  {
  result = a + b
  return
}

func main() {
  xingCan()
}

函数的参数的传递方式:
在 Golang 中函数调用参数均为值传递,函数在穿参的时候,都是以值的方式传递

例子一:(int类型)

func add(num int) (result int) {
  fmt.Println(&num)
  return num
}

func main() {
  num := 10
  result := add(num)
  fmt.Println(&num)
  fmt.Println(result)
}

例子二:(array类型)

func add(num [1]int) (result [1]int) {
  num[0] = 1
  fmt.Println(num) // [1]
  return num
}

func main() {
  num := [...]int{10}
  result := add(num)
  fmt.Println(num) // [10]
  fmt.Println(result)
}

例子三:(指针类型)

func modify(value *int) {
  value = nil 
  fmt.Println(value) //  0x0
}

func main() {
  a := new(int)
  modify(a)
  fmt.Println(a) // 0xc000040780
}

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

本文来自:简书

感谢作者:GGBO0M

查看原文:GO-函数学习

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

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