📜  Go语言中返回多个值的函数

📅  最后修改于: 2021-10-25 02:49:11             🧑  作者: Mango

在 Go 语言中,您可以使用 return 语句从函数返回多个值。或者换句话说,在函数,单个 return 语句可以返回多个值。返回值的类型类似于参数列表中定义的参数类型。

句法:

func function_name(parameter_list)(return_type_list){
     // code...
}

这里,

  • 函数名:它是函数的名称。
  • 参数列表:它包含函数参数的名称和类型。
  • return_type_list:它是可选的,它包含函数返回的值的类型。如果您在函数中使用 return_type,则有必要在函数使用 return 语句。

例子:

// Go program to illustrate how a
// function return multiple values
package main
  
import "fmt"
  
// myfunc return 3 values of int type
func myfunc(p, q int)(int, int, int ){
    return p - q, p * q, p + q 
}
  
// Main Method
func main() {
      
    // The return values are assigned into 
    // three different variables
   var myvar1, myvar2, myvar3 = myfunc(4, 2)
     
   // Display the values
   fmt.Printf("Result is: %d", myvar1 )
   fmt.Printf("\nResult is: %d", myvar2)
   fmt.Printf("\nResult is: %d", myvar3)
}

输出:

Result is: 2
Result is: 8
Result is: 6

为返回值命名

在 Go 语言中,您可以为返回值提供名称。您还可以在代码中使用这些变量名称。没有必要用 return 语句编写这些名称,因为 Go 编译器会自动理解这些变量必须分派回来。这种类型的回报被称为裸回报。裸返回减少了程序中的重复。

句法:

func function_name(para1, para2 int)(name1 int, name2 int){
    // code...
}

or

func function_name(para1, para2 int)(name1, name2 int){
   // code...
}

这里, name1name2是返回值的名称, para1 和 para2 是函数的参数。

例子:

// Go program to illustrate how to
// give names to the return values
package main
  
import "fmt"
  
// myfunc return 2 values of int type
// here, the return value name 
// is rectangle and square
func myfunc(p, q int)( rectangle int, square int ){
    rectangle = p*q
    square = p*p
    return  
}
  
func main() {
      
    // The return values are assigned into 
    // two different variables
   var area1, area2 = myfunc(2, 4)
     
   // Display the values
   fmt.Printf("Area of the rectangle is: %d", area1 )
   fmt.Printf("\nArea of the square is: %d", area2)
     
}

输出:

Area of the rectangle is: 8
Area of the square is: 4