您的位置 首页 golang

大白话 golang 教程-04-函数签名和使用

前面的例子,我们使用了很多函数,为了不让你惊慌,决定先讲一点儿 go 语言函数的基本知识,后面的章节还要深入讲解。

函数在程序设计里翻译为功能为合适,就像数学里的 y=f(x),如果没有函数,所有的代码都要写在 main 里面,不但无法使用现成的功能,还会造成臃肿不可维护(同样的任务不可能写两遍重复的代码),所以函数的作用就是组织代码和实现功能重用。

函数在任务上应该单一,一个函数只做好一件事即可。go 语言的函数由 func 关键字开始申明,完整的函数包含函数名称、参数列表、返回值、函数体。如果一个函数没有参数,也没有返回值,就只剩下函数名和函数体了。

 func doNothing() {
  // 函数体
}  

不过函数也可以匿名,也就没有没有函数名称,或者把函数赋值给一个变量。

 // 直接调用一个匿名函数
func anonymous() {
  func() {
    fmt.Println("i am anonymous function")
  }() // 注意这个括号
}


func holdFuncWithVar() {
  // 把函数复制给一个变量
  f := func(name string) {
    fmt.Printf("hey, %s\n", name)
  }

  // 显示 func(string)
  // fmt.Printf("%T", f)

  f("zhangsan")
}  

下面是一个有参数和返回值的函数,函数的返回结果使用 return 来表示。

 // 函数有返回值
func incNumber(in int) int {
  return in + 1
}  

go 的函数也可以有多个返回值。

 // 函数有多个返回值
func swapStr(s1, s2 string) (string, string) {
  return s2, s1
}  

函数的参数可以有一个不定参数,不过它必须是参数列表最后一个,我们用的 fmt.Println 的参数就是不定参数(F12 去看看)。

 func Println(a ...interface{}) (n int, err error) {
  return Fprintln(os.Stdout, a...)
}  

返回值申明一个具体的变量,这样返回的时候就只写 return 就可以了。

 // more 是不定参数,result 是返回变量
func sumAllWithInitial(initial int, more ...int) (result int) {
  result = initial

  // 循环读取 more 参数,以后会学习
  for _, num := range more {
    result = result + num
  }

  // 等效于 return result
  return
}  

go 有很多内置的函数,比如 len、copy、append 等等。

 func builtInFunc() {
  str := "english中文"
  // len 是一个内置函数
  // 对于 string 它返回字节
  fmt.Println(len(str)) // 返回 13,因为 1 个中文 UTF-8 这里存储占 3 个字节
}
  

关于函数还有很多重要的知识点,目前暂且知道这么多,第 8 小节再深入学习,下一章学习语言的控制结构。

本章节的代码

文章来源:智云一二三科技

文章标题:大白话 golang 教程-04-函数签名和使用

文章地址:https://www.zhihuclub.com/89890.shtml

关于作者: 智云科技

热门文章

网站地图