发布时间:2024-11-21 17:56:50
func hello() { fmt.Println("Hello, Golang!") }
在上述代码中,函数名为"hello",参数列表为空,没有返回值。该函数的功能是打印输出一条简单的问候语。func sum(a, b int) int { return a + b }
在上述代码中,参数"a"和"b"的类型都为"int",返回值类型也为"int"。通过参数列表中的类型声明,我们可以确保传入的参数类型正确,提高程序的可靠性。 除了普通参数外,Golang还支持可变参数。可变参数可以接受不定数量的参数,且参数类型相同。下面是一个简单的示例:func average(numbers ...int) float64 { total := 0 for _, num := range numbers { total += num } return float64(total) / float64(len(numbers)) }
在上述代码中,函数"average"接受一个类型为"int"的可变参数"numbers",并计算它们的平均值。通过使用"..."语法来声明可变参数,我们可以在函数调用时传入任意数量的参数。func swap(a, b int) (int, int) { return b, a }
在上述代码中,函数"swap"接受两个整数参数"a"和"b",并返回它们的交换结果。通过使用圆括号来指定返回值列表,我们可以同时返回多个值。 除了普通的返回值外,Golang还支持命名返回值。命名返回值可以在函数体中直接使用,省略return语句。以下是一个使用命名返回值的示例:func divide(a, b float64) (result float64, err error) { if b == 0 { err = errors.New("division by zero") return } result = a / b return }
在上述代码中,函数"divide"接受两个浮点数参数"a"和"b",并返回它们的商。如果除法的分母为0,该函数会返回一个错误。通过对返回值进行命名,我们可以直接在函数体中对其进行操作,使代码更加简洁。func main() { greet := func() { fmt.Println("Hello, Golang!") } greet() }
在上述代码中,将一个打印问候语的匿名函数赋值给变量"greet",然后调用该变量以执行函数。 匿名函数还可以有自己的参数和返回值。下面是一个带有参数和返回值的匿名函数示例:func main() { calculate := func(a, b int) int { return a + b } result := calculate(10, 20) fmt.Println(result) }
在上述代码中,将一个计算两个整数之和的匿名函数赋值给变量"calculate",然后调用该变量并传入具体的参数。func counter() func() int { count := 0 return func() int { count++ return count } } func main() { increment := counter() fmt.Println(increment()) // 输出:1 fmt.Println(increment()) // 输出:2 }
在上述代码中,函数"counter"返回一个匿名函数,该匿名函数用于计数并返回计数值。每次调用"counter"函数时,都会创建一个新的闭包实例,保持了对"count"变量的引用。 通过使用闭包,我们可以实现一些更加复杂的功能,例如实现模块化和状态管理。