当前位置:首页 > 编程笔记 > 正文
已解决

Go语言入门-函数

来自网友在路上 161861提问 提问时间:2023-11-02 18:06:44阅读次数: 61

最佳答案 问答题库618位专家为你答疑解惑

函数

函数的声明

在Go语言中,函数的声明方式有以下几种:

普通函数声明

普通函数声明是最基本的函数声明方式,它的语法如下:

func 函数名(参数列表) 返回值类型 {// 函数体
}

其中,参数列表可以是零个或多个参数,每个参数由参数名和参数类型组成,多个参数之间用逗号分隔;返回值类型可以是零个或多个类型,多个类型之间用逗号分隔。

举个例子,以下是一个计算两个整数之和的函数:

//声明
func add(x int, y int) int {return x + y
}
//调用
result := add(3, 5)

这个函数的参数列表有两个参数:x和y,它们都是int类型;返回值类型是int型。

匿名函数声明

匿名函数是没有函数名的函数,它的语法如下:

func(参数列表) 返回值类型 {// 函数体
}

与普通函数不同的是,在匿名函数声明中,函数名被省略了,而函数体直接写在了声明语句中。

举个例子,以下是一个将字符串转为大写的匿名函数:

upper := func(s string) string {return strings.ToUpper(s)
}
//调用
println(upper("nihao"))

这个匿名函数只有一个参数s,它的返回值类型是string型。

方法声明

在Go语言中,方法就是与特定类型相关联的函数。方法声明的语法如下:

func (接收器类型) 方法名(参数列表) 返回值类型 {// 函数体
}

其中,接收器类型指定了该方法与哪种类型相关联。在调用该方法时,会自动将该类型的一个变量作为第一个参数传入方法中。

举个例子,以下是一个计算点之间距离的方法:

type Point struct {X, Y float64
}func (p Point) Distance(q Point) float64 {return math.Hypot(q.X-p.X, q.Y-p.Y)
}
func main() {p := Point{X: 0.0, Y: 0.0}q := Point{X: 3.0, Y: 4.0}println(p.Distance(q)) //+5.000000e+000
}

这个方法的接收器类型是Point,它的参数列表有一个Point类型的参数q,返回值类型是float64型。

函数变量声明

在Go语言中,函数也可以被看作一种类型,因此可以定义函数变量。函数变量的声明方式如下:

var 变量名 func(参数列表) 返回值类型 = 函数名

其中,变量名为函数变量的变量名,参数列表和返回值类型与函数名相同。

举个例子,以下是一个将字符串转为小写的函数变量:

lower := strings.ToLower
println(lower("NiHao")) //nihao

这个函数变量的参数列表只有一个string类型的参数s,返回值类型也是string型。

可变参数

可变参数是指函数接受不定数量的参数。我们可以使用"…"语法来声明可变参数。下面是一个简单的例子:

func sum(nums ...int) int {total := 0for _, num := range nums {total += num}return total
}func main() {result := sum(1, 2, 3, 4, 5)fmt.Println(result) //  15
}

在上面的例子中,sum函数接受一个不定数量的整数参数,并将它们相加返回总和。在main函数中调用sum函数时,我们传递了5个整数参数,但是sum函数可以接受任意数量的参数。除了整数类型,可变参数也可以接受其他类型的参数,例如字符串、结构体等。需要注意的是,可变参数在函数内部被当作切片(slice)处理。因此,在函数内部可以像操作切片一样使用可变参数。

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"Go语言入门-函数":http://eshow365.cn/6-30404-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!