for条件表达式中的“已声明但未使用”变量

我的直觉方法:https : //play.golang.org/p/6xzg7TK1IH

它不起作用。

你能分享一些替代方法吗?


HUWWW
浏览 144回答 2
2回答

慕标琳琳

您正在声明一个moreline不使用它的变量 ( )。您在这里有两个选择:要么moreline用下划线替换,这意味着您可以省略返回值。for moreline {        line, _, err := bio.ReadLine()        if err != nil {                log.Fatal(err)        }        fmt.Println(line)}但更好的选择是使用ReadScanner,ReadBytes('\n')或ReadString('\n')。检查bufio.go文件,这是您获得的ReadLine方法描述:ReadLine 是一个低级的行读取原语。大多数调用者应该使用 ReadBytes('\n') 或 ReadString('\n') 来代替或使用 Scanner。调用UnreadByteafterReadLine将始终未读取读取的最后一个字节(可能是属于行尾的字符),即使该字节不是ReadLine. ReadLine要么返回非零行,要么返回错误,永远不会两者兼而有之。所以这将是一个更好的选择:scanner := bufio.NewScanner(bio)for scanner.Scan() {    line := scanner.Text()    fmt.Printf("%v\n", line)}

慕森王

您使用:=which 丢弃变量的先前内容。您不在morelines该范围内使用,因此会出现错误消息。如果您事先声明变量并且不使用:=,则它可以正常工作。该函数ReadLine()可能不会执行您认为它应该执行的操作。package mainimport (    "bufio"    "fmt"    "log"    "os")func main() {    bio := bufio.NewReader(os.Stdin)    var line []byte    var err error    moreline := true    for moreline {        line, moreline, err = bio.ReadLine()        if err != nil {            log.Fatal(err)        }        fmt.Println(line)    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go