定义一个 sum 函数,接收两个 int 类型的参数,在运行中,将其值分别赋值给 a,b,并规定必须返回一个int类型的值
代码示例如下:
func sum(a int, b int) (int){
return a + b
}
func main() {
fmt.Println(sum(1,2))
}
函数实现可变参数
Golang 可变参数本质上就是 slice。只能有一个,且必须是最后一个。
可变参数分为几种:
多个类型一致的参数
多个类型不一致的参数
多个类型一致的参数
首先是多个类型一致的参数。
这边定义一个可以对多个数值进行求和的函数,
使用...int,表示一个元素为int类型的切片,用来接收调用者传入的参数。
// 使用 ...类型,表示一个元素为int类型的切片
func sum(args ...int) int {
var sum int
for _, v := range args {
sum += v
}
return sum
}
func main() {
fmt.Println(sum(1, 2, 3))
}
import "fmt"
func MyPrintf(args ...interface{}) {
for _, arg := range args {
switch arg.(type) {
case int:
fmt.Println(arg, "is an int value.")
case string:
fmt.Println(arg, "is a string value.")
case int64:
fmt.Println(arg, "is an int64 value.")
default:
fmt.Println(arg, "is an unknown type.")
}
}
}
func main() {
var v1 int = 1
var v2 int64 = 234
var v3 string = "hello"
var v4 float32 = 1.234
MyPrintf(v1, v2, v3, v4)
}
package main
import (
"fmt"
)
func test(s string, n ...int) string {
var x int
for _, i := range n {
x += i
}
return fmt.Sprintf(s, x)
}
func main() {
s := []int{1, 2, 3}
res := test("sum: %d", s...) // slice... 展开slice
println(res)
}
import "fmt"
func sum(args ...int) int {
var result int
for _, v := range args {
result += v
}
return result
}
func Sum(args ...int) int {
// 利用 ... 来解序列
result := sum(args...)
return result
}
func main() {
fmt.Println(Sum(1, 2, 3))
}
函数的返回值
Go语言中的函数,在你定义的时候,就规定了此函数
有没有返回值?
当没有指明返回值的类型时, 函数体不能有 return
返回几个值?
Go 支持一个函数返回多个值
func double(a int) (int, int) {
b := a * 2
return a, b
}
func main() {
// 接收参数用逗号分隔
a, b := double(2)
fmt.Println(a, b)
}