Go 函数返回
返回值
如果你想让函数返回值,你需要定义返回值的数据类型(如 int
、string
等),同时在函数内部使用 return
关键字:
语法
func FunctionName(param1 type, param2 type) type { // 要执行的代码 return output }
实例:函数返回
实例
这里,myFunction()
接收两个整数(x
和 y
)并将它们的和 (x + y
) 作为整数 (int
) 返回:
package main import ("fmt") func myFunction(x int, y int) int { return x + y } func main() { fmt.Println(myFunction(1, 2)) }
结果:
3
命名返回值
在 Go 中,你可以为函数的返回值命名。
实例
这里,我们将返回值命名为 result
(类型为 int
),并使用裸返回(意味着我们在 return
语句中没有指定变量名):
package main import ("fmt") func myFunction(x int, y int) (result int) { result = x + y return } func main() { fmt.Println(myFunction(1, 2)) }
结果:
3
上面的例子也可以这样写。在这里,return
语句指定了变量名:
实例
package main import ("fmt") func myFunction(x int, y int) (result int) { result = x + y return result } func main() { fmt.Println(myFunction(1, 2)) }
将返回值存储在变量中
您还可以将返回值存储在变量中,如下所示:
实例
在这里,我们将返回值存储在一个名为 total
的变量中:
package main import ("fmt") func myFunction(x int, y int) (result int) { result = x + y return } func main() { total := myFunction(1, 2) fmt.Println(total) }
多个返回值
Go 函数还可以返回多个值。
实例
这里,myFunction()
返回一个整数(result
)和一个字符串(txt1
):
package main import ("fmt") func myFunction(x int, y string) (result int, txt1 string) { result = x + x txt1 = y + " World!" return } func main() { fmt.Println(myFunction(5, "Hello")) }
结果:
10 Hello World!
实例
这里,我们将两个返回值存储在两个变量(a
和 b
)中:
package main import ("fmt") func myFunction(x int, y string) (result int, txt1 string) { result = x + x txt1 = y + " World!" return } func main() { a, b := myFunction(5, "Hello") fmt.Println(a, b) }
结果:
10 Hello World!
如果我们(由于某种原因)不想使用某些返回的值,我们可以添加一个下划线(_
),以省略该值。
实例
这里,我们想省略第一个返回值(存储在变量 a
中的 result
):
package main import ("fmt") func myFunction(x int, y string) (result int, txt1 string) { result = x + x txt1 = y + " World!" return } func main() { _, b := myFunction(5, "Hello") fmt.Println(b) }
结果:
Hello World!
实例
这里,我们想省略第二个返回值(存储在变量 b
中的 txt1
):
package main import ("fmt") func myFunction(x int, y string) (result int, txt1 string) { result = x + x txt1 = y + " World!" return } func main() { a, _ := myFunction(5, "Hello") fmt.Println(a) }
结果:
10