从头开始--函数
在这一部分,我们将讨论如何定义和使用函数。当你有相同类型的代码在许多地方使用时,函数是非常好的。通过使用函数,你从而减少了重复。
只要你有一组你在许多地方重复的语句,这就是一个创建函数的好用例。你放在函数中的典型东西是记录到一个文件,执行一个计算或与一个数据源对话。
你的第一个函数main
到目前为止,你已经看到了函数main() ,像这样定义。
func main(){
}
这样的函数只有一个,它被称为入口点,代表程序的开始。然而,你可以定义其他函数。
一个函数的解剖结构
一个函数由多个部分组成。通过整合所有这些部分,你可以确保你有一段可重复使用的代码,可以在很多地方使用。
以下是你需要关注的部分。
func, 关键字func。- 参数,0到多个参数
- 一个函数主体,即说明该函数所做工作的语句
- 一个返回结构,如果函数返回了什么东西
这里有一个例子。
func add(first int, second int) int {
return first + second
}
在前面的代码中,函数被命名为add() 。它有参数first 和second 。函数主体,即函数所做的事情,由以下代码组成。
return first + second
练习--在程序中增加一个函数
-
创建一个文件main.go,并赋予其以下内容。
package main import "fmt" func main() { } -
添加一个函数
log(),我们可以用它来打印信息。
添加到程序中,你的代码现在看起来应该是这样的。
```go
package main
import "fmt"
func log() {
fmt.Println("message")
}
func main() {
log()
}
```
在这一点上,log() 函数不是很灵活,每次调用它都会打印出 "消息"。
为了使log() 函数更加灵活,让我们添加一个参数。
添加一个参数
一个参数需要一个数据类型,在这种情况下,我们将使它成为string 。
-
在括号中添加参数
(),像这样。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
sum 和product 都是分配的值,你有一个关闭的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)
注意你是如何将两个返回值分配给变量sum 和product 的。
总结
在这篇文章中,我们学习了如何创建函数。我们还添加了参数,使函数变得灵活。希望现在你能使用函数来确保你的代码既灵活又不重复。