【发布时间】:2021-10-11 09:44:36
【问题描述】:
我有以下代码 sn-p:
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
var reader *bufio.Reader = bufio.NewReader(os.Stdin)
fmt.Println("Enter your name")
name, err := reader.ReadString('\n') //THIS LINE
if err == nil {
fmt.Println("Hello " + name)
}
}
我的问题是,如果我不想使用 := 语法(就像我在 main() 的第一行所使用的那样),我将如何使用类型重写 ReadString() 调用?
我尝试了以下方法,但出现了相应的错误:
-
var name string, err error = reader.ReadString('\n')->syntax error: unexpected comma at end of statement -
var name, err string, error = reader.ReadString('\n')->syntax error: unexpected comma at end of statement - 从Multiple variables of different types in one line in Go (without short variable declaration syntax) 获得提示,我也尝试了
var (name string, err error) = reader.ReadString('\n'),它也给出了同样的错误。
对于上面链接的问题,标记的答案只是建议对两种不同的变量类型使用两行。但是对于像ReadString() 这样的函数的返回值,这将如何工作呢?
【问题讨论】:
-
var name, err = reader.ReadString('\n')?或者为什么不用var预先声明变量并指定类型并在之后使用它? -
var name, err = reader.ReadString('\n')不会使类型信息明显,var reader *bufio.Reader = bufio.NewReader(os.Stdin)的方式很明显reader是*bufio.Reader类型。至于之前用类型声明变量,我可以这样做,但我会失去单行的好处。如果您看到我迄今为止尝试过的示例,也许这会澄清我在寻找什么。 -
为了更好的代码可读性,我会在单线利益上妥协。
-
不可能在单个语句中显式声明两种类型。 variable spec 可以有零个或一个类型。
-
我认为这是一个合理的担忧。欢迎您为 Go 语言的新语法提交提案。
标签: go