我们试图读取用户的键盘输入,但出现了一个错误。编译器报告了在此代码中的一个问题:
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
reader := bufio.NewReader(os.Stdin)
input := reader.ReadString('\n')
fmt.Println(reader)
}
./prog.go:11:8: assignment mismatch: 1 variable but reader.ReadString returns 2 values
Go build failed.
复制代码
问题是 ReadString 方法试图返回两个值,而我们只提供了一个变量来赋值。
在大多数编程语言中,函数和方法只能由一个返回值。但在 Go 中,它们可以返回任意数量的值。Go 中多个返回值最常见的用法是返回一个额外的错误值,可以通过查询该错误值来确定函数或方法运行时是否发生了错误。举几个例子。
bool, err := strconv.ParseBool("true") //如果字符串无法转换为布尔值,则返回一个错误
file, err := os.Open("myfile.txt") //如果文件无法打开,则返回一个错误
response, err := http.Get("https://www.baidu.com") //如果无法访问页面,则返回错误
复制代码
Go 要求声明的每个变量都必须在程序的某个地方使用。如果我们添加了一个 err 变量,而不检查它,我们的代码将无法编译。未使用的变量通常表示一个 bug,所以这是一个 Go 帮助检测和修复 bug 的例子。
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println("")
}
// 报错信息:
imported and not used: "os"
复制代码
Go 不允许我们声明一个变量,除非我们使用它。
评论