Go函数定义格式如下:
func function_name( [parameter list] ) [return_types] {
函数体
}
例如:
func add(n1, n2 int) int{
return n1 + n2
}
Go函数可以返回多个值,这个时候返回值类型要用括号括起来,例如:
func div(n1, n2 int) (int,int){
return n1 / n2, n1 % n2
}
Go函数可以给返回值命名,这个时候即使只有一个返回值也要用括号括起来,例如:
func add(n1, n2 int) (result int){
result= n1 + n2
return
}
func div(n1, n2 int) (result int,remainder int){
result= n1 / n2
remainder= n1 % n2
return
}
Go可以很灵活的创建函数,并作为另外一个函数的实参:
type getTowNumberResultFunc func(int,int) int
func add(n1, n2 int) int{
return n1+ n2
}
func printResult(n1, n2 int,f getTowNumberResultFunc){
println(f(n1, n2))
}
func main() {
printResult(10,20,add);
myGetReslut := func(n1, n2 int) int {
return n1 * n2
}
printResult(10,20,myGetReslut)
}
Go支持匿名函数,可作为闭包,匿名函数是一个"内联"语句或表达式,匿名函数的优点在于可以直接使用函数内的变量。
type getTowNumberResultFunc func(int,int) int
func getAddFunc() func(int,int) int{
initValue:=20
return func(n1, n2 int) int{
return initValue+ n1 + n2
}
}
func printResult(n1, n2 int,f getTowNumberResultFunc){
println(f(n1, n2))
}
func main() {
printResult(10,20,getAddFunc());
}
Go没有面向对象,但却可以给指定类型添加方法,格式如下:
func (variable_name variable_data_type) function_name() [return_type]{
/* 函数体*/
}
Go中的方法就是一个包含了接受者的函数,接受者可以是类型的一个值或是一个指针,类似于C++中的this。
type Person struct{
height int
}
func (person Person) printHeight(){
println(person.height)
}
func main() {
person:=Person{100}
person.printHeight()
}
有疑问加站长微信联系(非本文作者)