golang 函数

Posted Golang发烧友

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang 函数相关的知识,希望对你有一定的参考价值。

golang函数特点:

• 无需声明原型。
• 支持不定 变参。
• 支持多返回值。
• 支持命名返回参数。
• 支持匿名函数和闭包。
• 函数也是一种类型,一个函数可以赋值给变量。
• 不支持 嵌套 (nested) 一个包不能有两个名字一样的函数。
• 不支持 重载 (overload)
• 不支持 默认参数 (default parameter)。

函数声明:

函数声明包含一个函数名,参数列表, 返回值列表和函数体。如果函数没有返回值,则返回列表可以省略。函数从第一条语句开始执行,直到执行return语句或者执行函数的最后一条语句。

函数可以没有参数或接受多个参数。

注意类型在变量名之后 。

当两个或多个连续的函数命名参数是同一类型,则除了最后一个类型之外,其他都可以省略。

函数可以返回任意数量的返回值。

使用关键字 func 定义函数,左大括号依旧不能另起一行。

func test(x, y int, s string) (int, string) {
   // 类型相同的相邻参数,参数类型可合并。 多返回值必须用括号。
   n := x + y      
   return n, fmt.Sprintf(s, n)
}

函数是第一类对象,可作为参数传递。建议将复杂签名定义为函数类型,以便于阅读。

package main
import "fmt"
func test(fn func() int) int {
   return fn()
}
// 定义函数类型。
type FormatFunc func(s string, x, y int) string
func format(fn FormatFunc, s string, x, y int) string
{
   return fn(s, x, y)
}
func main() {
   s1 := test(func() int { return 100 }) // 直接将匿名函数当参数。
   s2 := format(func(s string, x, y int) string {
       return fmt.Sprintf(s, x, y)
   }, "%d, %d", 10, 20)
   println(s1, s2)
}

输出结果:

100 10, 20

有返回值的函数,必须有明确的终止语句,否则会引发编译错误。


以上是关于golang 函数的主要内容,如果未能解决你的问题,请参考以下文章

代码片段 - Golang 实现简单的 Web 服务器

代码片段 - Golang 实现集合操作

json [Golang] golang #golang #snippets中有用的片段

Golang Functional Options 来了解一下?

java golang oop 2文章片段

golang 去练习片段