在 linux 上正确运行程序,但在 windows 上不能

我目前正在学习 Go 语言。在不同的平台上尝试:Linux、Windows 当我在 Linux 上运行代码时它运行得很好,但是当我在 Windows 上尝试这个程序时它不起作用。

它只是简单的 cmd 计算器,允许简单的操作,如加数、乘法等。它不处理像字符这样的错误输入。这是我第一个采用 Go 语法的程序

什么不起作用:

  1. 解析整数

  2. 比较输入

代码:

package main


import (

    "bufio"

    "fmt"

    "math"

    "os"

    "strconv"

    "strings"

)


func main() {


    reader := bufio.NewReader(os.Stdin)

    var operation int

    var firstNumber float64

    var secondNumber float64


    fmt.Println("Simple cmd calculator")


    repeat := true


    for repeat {


        fmt.Println("Enter number 1: ")

        firstNumber = getNumber(*reader)


        fmt.Println("Enter number 2: ")

        secondNumber = getNumber(*reader)


        fmt.Println()


        selectOperation(*reader, &operation)


        fmt.Print("You result is: ")


        switch operation {

        case 1:

            fmt.Println(add(firstNumber, secondNumber))

        case 2:

            fmt.Println(subtract(firstNumber, secondNumber))

        case 3:

            fmt.Println(multiply(firstNumber, secondNumber))

        case 4:

            fmt.Println(divide(firstNumber, secondNumber))

        }


        fmt.Println("Do you want to continue? [Y/n]")

        input, _ := reader.ReadString('\n')


        input = strings.Replace(input, "\n", "", -1)


        if !(input == "Y" || input == "y") {

            repeat = false

        }


    }


}


func selectOperation(reader bufio.Reader, operation *int) {

    fmt.Println("1. Add")

    fmt.Println("2. Subtract")

    fmt.Println("3. Multiply")

    fmt.Println("4. Divide")


    fmt.Print("Select operation: ")

    input, _ := reader.ReadString('\n')

    input = strings.Replace(input, "\n", "", -1)

    number, _ := strconv.Atoi(input)

    *operation = number

}


结果:

Linux

视窗

我做错了什么还是不是我的错?


MYYA
浏览 167回答 1
1回答

慕少森

答案是:input = strings.Replace(input, "\r", "", -1) input = strings.Replace(input, "\n", "", -1)现在它可以在 windows 和 linux 上正常工作
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go