go语言中函数使用的注意事项和细节
- 函数的形参列表可以是多个,返回值列表也可以是多。
- 形参列表和返回值列表的数据类型可以是值类型和引用。
- 函数的命名遵循标识符命名规范,首字母不能是数字,首字母大写该函数可以被本包文件和其它包文件使用,类似 public , 首字母小写,只能被本包文件使用,其它包文件不能使用,类似 private。
- 函数中的变量是局部的,函数外不生效。
- 基本数据类型和数组默认都是值传递的,即进行值拷贝。在函数内修改,不会影响到原来的值。
- 如果希望函数内的变量能修改函数外的变量(指的是默认以值传递的方式的数据类型),可以传入变量的地址&,函数内以指针的方式操作变量。从效果上看类似引用 。
- Go 函数不支持函数重载。
- 在 Go 中,函数也是一种数据类型,可以赋值给一个变量,则该变量就是一个函数类型的变量了。通过该变量可以对函数调用
- 函数既然是一种数据类型,因此在 Go 中,函数可以作为形参,并且调用
package main
import(
"fmt"
)
func test(a int ,b int) int{
c :=a+b
return c
}
func res(funval func(int,int) int,num1 int, num2 int) int{
return funval(num1,num2)
}
func main(){
c :=res(test,10,20)
fmt.Println(c)
}
//30
- 为了简化数据类型定义,Go 支持自定义数据类型
基本语法:type 自定义数据类型名 数据类型 // 理解: 相当于一个别名 案例:type myInt int // 这时 myInt 就等价 int 来使用了 案例:type mySum func (int, int) int // 这时 mySum 就等价 一个 函数类型 func (int, int) int
-
支持对函数返回值命名
package main
import(
"fmt"
)
func test(a int ,b int) (c int) {
c =a+b
return
}
func main(){
d :=test(10,20)
fmt.Println(d)
}
//30
- 使用 _ 标识符,忽略返回值
- Go 支持可变参数