从头开始--功能

84 阅读3分钟

从头开始--函数

在这一部分,我们将讨论如何定义和使用函数。当你有相同类型的代码在许多地方使用时,函数是非常好的。通过使用函数,你从而减少了重复。

只要你有一组你在许多地方重复的语句,这就是一个创建函数的好用例。你放在函数中的典型东西是记录到一个文件,执行一个计算或与一个数据源对话。

你的第一个函数main

到目前为止,你已经看到了函数main() ,像这样定义。

func main(){
}

这样的函数只有一个,它被称为入口点,代表程序的开始。然而,你可以定义其他函数。

一个函数的解剖结构

一个函数由多个部分组成。通过整合所有这些部分,你可以确保你有一段可重复使用的代码,可以在很多地方使用。

以下是你需要关注的部分。

  • func, 关键字func
  • 参数,0到多个参数
  • 一个函数主体,即说明该函数所做工作的语句
  • 一个返回结构,如果函数返回了什么东西

这里有一个例子。

func add(first int, second int) int {
  return first + second
}

在前面的代码中,函数被命名为add() 。它有参数firstsecond 。函数主体,即函数所做的事情,由以下代码组成。

return first + second

练习--在程序中增加一个函数

  1. 创建一个文件main.go,并赋予其以下内容。

    package main
    
    import "fmt"
    
    func main() {
    
    }
    
  2. 添加一个函数log() ,我们可以用它来打印信息。

添加到程序中,你的代码现在看起来应该是这样的。

```go
package main

import "fmt"

func log() {
  fmt.Println("message")
}

func main() {
  log()
}
```

在这一点上,log() 函数不是很灵活,每次调用它都会打印出 "消息"。

为了使log() 函数更加灵活,让我们添加一个参数。

添加一个参数

一个参数需要一个数据类型,在这种情况下,我们将使它成为string

  1. 在括号中添加参数() ,像这样。

    func log(message string) {
      fmt.Println(message)
    }
    
    // to use
    log("hi")
    log("there")
    

注意log() 函数是如何接收字符串类型的参数message 的。我们的代码更灵活了。

添加一个返回类型

要添加一个返回类型,我们在函数的括号后以类型的形式添加。下面是一个例子。

add(firstNumber int, secondNumber int) int {
 ...
}

因为我们添加了一个返回类型int ,所以我们的函数必须返回一些东西。返回一个值的方法是使用关键字return ,像这样。

add(firstNumber int, secondNumber int) int {
  return firstNumber + secondNumber 
}

命名返回

我们也可以像这样命名返回参数。

add(firstNumber int, secondNumber int) (sum int) {
  sum = firstNumber + secondNumber 
  return
}
  • 注意sum 是函数原型声明的一部分(sum int) ,然后分配一个值sum = firstNumber + secondNumber

  • 还有一个return 在它自己的一行,这段代码会被编译,因为有一个返回变量的概念。

多重返回

有可能返回一个以上的值。

就像你通过(sum int) 返回一个命名的参数一样,你可以用逗号分开,就像这样(sum int, product int) 。当返回多个值时,你可以像这样输入。

sum = first + second
product = first * second
return

sumproduct 都是分配的值,你有一个关闭的return

把它放在一起,你会得到一个看起来像这样的函数。

func calc(first int, second int) (sum int, product int) {
 sum = first + second
 product = first * second
 return
}

要调用这个函数,你可以像这样输入。

sum, product := calc(1, 2)
fmt.Println(sum)
fmt.Println(product)

注意你是如何将两个返回值分配给变量sumproduct 的。

总结

在这篇文章中,我们学习了如何创建函数。我们还添加了参数,使函数变得灵活。希望现在你能使用函数来确保你的代码既灵活又不重复。