Go- 函数返回值
版权声明: 本文为 InfoQ 作者【HelloBug】的原创文章。
原文链接:【http://xie.infoq.cn/article/119b321d5a345518e640c4cf6】。
本文遵守【CC BY-NC-ND】协议,转载请保留原文出处及本版权声明。
Go 学习笔记,学习内容《Go入门指南》
主要介绍以下内容:
函数返回值形式
函数返回值个数
函数封装处理返回值
fmt.Println 函数返回值
代码示例可以直接运行
package main
import (
"fmt"
"os"
"strconv"
)
func foo() (n1 int, n2 int) {
return 99, 100
}
func atoi(s string) (n int) {
n, _ = strconv.Atoi(s)
return
}
func main() {
/*
函数返回值形式
1、成功:正常值,失败:异常值,error信息,error信息类型为:var err error
2、成功:正常值,true,失败: 异常值,false
*/
num, err := strconv.Atoi("8") // 参数为非数字的字符串时可测试err != nil的情况
if err != nil {
fmt.Println("strconv error: ", err) // 输出:strconv error: strconv.Atoi: parsing "H": invalid syntax
os.Exit(1) // 如果想要在失败的时候退出程序,可以直接Exit
return // 如果想要在失败的时候退出函数,可以直接return
}
fmt.Println(num) // 输出:0
/*
可以下面这种方式调用
*/
if n, err := strconv.Atoi("6"); err == nil {
fmt.Println(n) // 注意 n 的作用域在if代码块,若在该代码块之后调用,则编译错误:undefined: n
}
/*
函数返回值个数和接收值个数必须相等
*/
n1, n2 := foo()
fmt.Println(n1, n2) // 输出:99 100
//n1 = foo() // 编译错误:assignment mismatch: 1 variable but foo returns 2 values
//n3, n4, n5 := foo() //编译错误:assignment mismatch: 3 variables but foo returns 2 values
/*
函数封装
*/
n3 := atoi("Go")
fmt.Println(n3) // 输出:0
/*
fmt.Println函数返回值
打印到控制台时,函数返回值可以忽略,当输出到文件流、网络流等具有不确定因素的输出对象时,应该始终检查是否有错误发生
*/
count, err := fmt.Println(1, 2, 3) // 输出:1 2 3
fmt.Println(count, err) // 输出:6 <nil>
}
版权声明: 本文为 InfoQ 作者【HelloBug】的原创文章。
原文链接:【http://xie.infoq.cn/article/119b321d5a345518e640c4cf6】。
本文遵守【CC BY-NC-ND】协议,转载请保留原文出处及本版权声明。
还未添加个人签名 2018.09.20 加入
还未添加个人简介
促进软件开发及相关领域知识与创新的传播
评论