- 前言
- Go 与操作系统
- Go 内部机制
- Go 基本数据类型
- 4 组合类型的使用
- 5 数据结构
- 6 Go package 中不为人知的知识
- 7 反射和接口
- 8 Go UNIX 系统编程
- 08.1 关于 UNIX 进程
- 08.2 flag 包
- 8.2 flag 包
- 08.3 io.Reader 和 io.Writer 接口
- 08.4 bufio 包
- 08.5 读取文本文件
- 08.6 从文件中读取所需的数据量
- 08.7 为什么我们使用二进制格式
- 08.8 读取 CSV 文件
- 08.9 写入文件
- 08.10 从磁盘加载和保存数据
- 08.11 再看strings包
- 08.12 关于bytes包
- 08.13 文件权限
- 08.14 处理 Unix 信号
- 08.15 Unix 管道编程
- 08.16 遍历目录树
- 08.17 使用 ePBF
- 08.18 关于 syscall.PtraceRegs
- 08.19 跟踪系统调用
- 08.20 User ID 和 group ID
- 08.21 其他资源
- 08.22 练习
- 08.23 总结
- 9 并发 Goroutines、Channel 和 Pipeline
- 10 Go 并发-进阶讨论
- 11 代码测试、优化及分析
- 12 Go 网络编程基础
- 13 网络编程 - 构建服务器与客户端
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
06.2.2 多返回值的函数
如您已经从 strconv.atoi()
等函数所知,Go 函数可以返回多个不同的值,这就避免了您必须创建一个专用的结构,以便能够同时从一个函数接收多个值。您可以声明一个如下返回四个值的函数,两个 int
值,一个 float64
值和一个 string
:
func aFunction() (int, int, float64, string){
}
现在来以 functions.go
做例子来说明匿名函数和返回多值的函数。相关代码分五部分来介绍。
functions.go
的第一段代码如下:
package main
import (
"fmt"
"os"
"strconv"
)
functions.go
的第二段代码如下:
func doubleSquare(x int) (int, int) {
return x * 2, x * x
}
这里您可以看到一个名为 doubleSquare()
函数的定义和实现,它只需要一个 int
参数并返回两个 int
值。
functions.go
的第三部分如下:
func main() {
arguments := os.Args
if len(arguments) != 2 {
fmt.Println("The program needs 1 argument!")
return
}
y, err := strconv.Atoi(arguments[1])
if err != nil {
fmt.Println(err)
return
}
上面的代码处理程序的命令行参数。
functions.go
的第四部分包含如下代码:
square := func(s int) int {
return s * s
}
fmt.Println("The squre of", y, "is", square(y))
double := func(s int) int {
return s + s
}
fmt.Println("The double of", y, "is", double(y))
square
和 double
变量分别对应一个匿名函数。糟糕的部分是 squre
,double
的值或任何其他对应匿名函数的变量值可以被修改,这意味着,这些变量能修改和计算其他的。
不要认为可以修改匿名函数变量的代码是好的程序实现,因为这可能是错误的根源!
functions.go
的最后一部分如下:
fmt.Println(doubleSquare(y))
d, s := doubleSquare(y)
fmt.Println(d, s)
}
您可以打印如 doubleSquare()
函数的返回值,也可以把它们分配给其他变量。
执行 functions.go
产生如下输出:
$go run functions.go 1 21
The program needs 1 argument!
rMackBook: code mtsouk
$go run functions.go 10
The square of 10 is 100
The double of 10 is 20
20 100
20 100
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论