--- title: Go Functions localeTitle: Go函数 --- ## Go函数 函数接受任何类型的零个或多个参数,对它们执行某些逻辑并可能返回一个或多个值。 Golang的函数语法是: ```go func sum(parameter1 int64, parameter2 int64) int64 { return parameter1+parameter2 } ``` 这里,函数的名称是`sum` 。它采用`int64`类型的参数, `parameter1`和`parameter2` 并返回另一个int64,这两个参数的总和。 ### 返回 `return`后,函数退出而不执行更多代码。 ```go func sum(parameter1 int64, parameter2 int64) int64 { return parameter1+parameter2 // Unreachable code fmt.Printf("Don't print me") } ``` ### 调用一个函数 上面的函数将被调用如下: ```go sum(4, 5) ``` 该表达式的值为9。 ### 省略参数类型 如果两个或更多个连续参数是相同类型,则可以仅说明一次。 ```go function foo(x, y, z int64, name string) { fmt.Printf("%d %d %d %s", x, y, z, name) } ``` 这里`x` , `y`和`z`的类型是`int64` , `name`是一个字符串。 ### 返回多个值 函数可以返回零个或多个值。 要什么都不返回,省略返回类型: ```go function helloWorld() { fmt.Printf("Hello world!") } ``` 要返回一个值,请指定其类型: ```go function getHelloWorld() string { return "Hello world!" } ``` 要返回多个值,请指定其类型,包装在`()`并用逗号分隔: ```go function getHelloWorldAndBestLanguage() (string, string) { return "Hello world!", "Golang" } ``` 要接收这些值,只需声明用逗号分隔的变量,如下所示: ```go helloWorld, bestLanguage := getHelloWorldAndBestLanguage() // helloWorld == "Hello world!" // bestLanguage == "Golang" ``` ### 命名返回值 您可以命名返回类型,以便不需要将变量传递给return语句: ```go func duplicate(s string) (first, second string) { first = s last = s return } func main() { fmt.Println(split("Hello world!")) // ("Hello world!", "Hello world!") } ``` #### 更多信息: https://tour.golang.org/basics/4