golang语言获取命令行输入内容的坑

到网上找到了篇文章,按照方法2执行,挺顺利的,获得了输入值,打印出来也是正确的.
坑呢,在这,当你用获取的Input和拼接其他字符串的时候,总得不到正确的结果.
表象是 Input(1234)+"abc" 打印结果是 abc4,其实真实的内容是 1234\rabc,打印出来就是 abc4
现在看来这个问题很简单,如https://zhidao.baidu.com/question/115845978.html, 字符串回车了,打印出来就是这样
但是当时,没有想到,在其他语言,获取输入很easy

  1. 怀疑得到的是字符数组,而不是字符串格式
  2. 判断输入的字符串和直接写好的字符串是否相同,即 Input(1234)="1234" ,毫无疑问输出false
  3. 接着看了Input的长度,果然有差异,将其打印,
    • 直接打印都是数字
    • 于是将前面按照string类型打印,最后的两位按照原来的数字打印.也可以按照格式化打印 printf
      果然出现了13 10

问题解决了

参考代码

package main

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

func main() {
    //参考 version 2 https://my.oschina.net/zengsai/blog/3719
    f := bufio.NewReader(os.Stdin) //读取输入的内容
    fmt.Print("请输入一些字符串>")
    var Input string
    Input, _ = f.ReadString('\n') //定义一行输入的内容分隔符。
    
    fmt.Println("字符串长度",len(Input))
    for i:=0;i=len(Input)-2{//最后一个字符,输出数字
            fmt.Print(Input[i])
        }else{
            fmt.Print(string(Input[i]))
        }
    }
    //windows平台操作
    //分隔符'\n' Input是 xxx\r\n    编码是1310
    //分隔符'\r' Input是 xxx\r  编码是13
    Input = strings.Replace(Input, "\n", "", -1)
    Input = strings.Replace(Input, "\r", "", -1)
    fmt.Println("")
    fmt.Println("字符串长度",len(Input))
    for i:=0;i

你可能感兴趣的:(golang语言获取命令行输入内容的坑)