GO函数
Go语言函数定义
函数是基本的代码块,用于执行一个任务。
Go语言函数特点:
1、关键字func用来声明一个函数funcName;
2、函数可以有一个或者多个参数,每个参数后面带有类型,通过逗号(,)分隔;
3、函数可以返回多个值;
4、返回值可以使用声明变量,如果不想声明也可以直接使用返回值的类型;
5、如果只有一个返回值且不声明返回值变量,那么你可以省略 包括返回值 的括号;
6、如果没有返回值,可以直接省略最后的返回信息;
7、如果有返回值, 必须在函数的外层添加return语句,否则会引发编译错误;
8、函数也是一种类型,一个函数可以赋值给变量,可作为参数传递;
9、函数不支持嵌套,一个包不能有两个名字一样的函数。不支持重载,不支持 默认参数
函数定义
第一种,定义一个无参数,无返回值的函数
func funcName() {
}
第二种,定义一个参数,无返回值的函数
func Print(str string) {
println(str)
}
第三种,定义多个参数的函数,一个返回值的函数
func sum(x, y int) int {
return x + y
}
第四种,定义一个多返回值的函数
func oldboy(str string) (ret string, err error) {
if str == “Go” {
return “技术引领潮流”, nil
}
return “”, errors.New(“error”)
}
第五种,返回值只有类型,无变量声明函数
func oldboy(str string) (string, error) {
if str == “Go” {
return “技术引领潮流”, nil
}
return “”, errors.New(“error”)
}
函数类型
第一种,定义一个无参数,无返回值的函数类型
type funcType func()
第二种,定义一个参数,无返回值的函数类型
type funcType func(string)
第三种,定义多个参数的函数,一个返回值的函数类型
type funcType func(x, y int) int
第四种,定义一个多返回值的函数类型
type funcType func(string) (string, error)
Go语言函数参数
函数参数
实际参数简称“实参”。在调用有参函数时,函数名后面括号中的参数称为“实际参数”,实参可以是常量、变量或表达式。
自定义函数中的“形参”全称为"形式参数" 由于它不是实际存在变量,所以又称虚拟变量。实参和形参可以重名。形参的作用域是整个函数体就像定义在函数体内的局部变量。
参数传递
第一种,值传递:指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。
package main
import (
"fmt"
)
func main() {
var x int = 1
var y int = 2
// 值传递
z := sum(x, y)
fmt.Println(z)
}
func sum(x, y int) int {
return x + y
}
第二种,引用传递:是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
package main
import (
"fmt"
)
func swap(x, y *string) {
var temp string
temp = *x
*x = *y
*y = temp
}
func main() {
var course1, course2 string = "Python", "Golang"
swap(&course1, &course2)
fmt.Println(course1, course2)
}
第三种,固定类型可变参数:就是函数的参数不是固定的,后面的类型是固定的。
package main
import (
"fmt"
)
func variable(name string, c