加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Golang for loop不会停止

发布时间:2020-12-16 09:27:17 所属栏目:大数据 来源:网络整理
导读:所以我开始学习Go编程语言,并希望有人能够澄清为什么我得到了我得到的结果.我正在尝试让程序读取用户的输入并显示回来,直到用户只输入换行符. 包主 import ( "fmt" "os" "bufio" "strings")func main(){ inputBuff := bufio.NewReader(os.Stdin) line,_ := i
所以我开始学习Go编程语言,并希望有人能够澄清为什么我得到了我得到的结果.我正在尝试让程序读取用户的输入并显示回来,直到用户只输入换行符.
包主

import (
    "fmt"
    "os"
    "bufio"
    "strings"
)

func main(){

    inputBuff := bufio.NewReader(os.Stdin)
    line,_ := inputBuff.ReadString('n')

    for  (!strings.EqualFold(line,"n")){
        line,err := inputBuff.ReadString('n')
        if err!=nil {
            fmt.Println(err)
        }
        fmt.Println(line)
        fmt.Println(!strings.EqualFold(line,"n"))
    }

}

我试图一次读完整个字符串,所以我认为使用扫描时bufio会更好.我添加了最后一个打印,表明该方法返回false但循环继续执行.任何帮助将不胜感激.

解决方法

循环内的行与您为检查启动的行不同. FTFY:

package main

import (
    "fmt"
    "os"
    "bufio"
    "strings"
)

func main(){

    inputBuff := bufio.NewReader(os.Stdin)
    line,_ := inputBuff.ReadString('n')
    var err error
    for  (!strings.EqualFold(line,err = inputBuff.ReadString('n')
        if err!=nil {
            fmt.Println(err)
        }
        fmt.Println(line)
        fmt.Println(!strings.EqualFold(line,"n"))
    }

你在循环中使用了:=赋值运算符,就像在行中一样,错误:= …..
这使得Go在名称行的for循环内创建一个新符号.但for的检查超出了循环代码块的内部范围.所以它指的是在循环外发起的旧行.

将循环内的运算符更改为=不会创建新变量,但也不会初始化错误,所以我也事先定义了它.错误可以在循环内声明,但这是多余的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读