You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言中如何验证输入为float64类型?求简便校验方案

Go语言输入float64类型的验证方法

Go里没有try/catch机制,它靠返回错误来处理异常情况,针对你的需求,有两种简便的验证方式:

  • 方法一:检查fmt.Scanln的返回值
    fmt.Scanln会返回两个值:成功读取的输入项数,以及可能的错误。因为你只需要读取一个float64类型的值,所以如果返回的项数不是1,或者存在错误,就说明输入不符合要求。

修改后的代码示例:

package main

import (
    "fmt"
    "math"
)

func main() {
    var number1, number2 float64
    var operator string

    fmt.Print("Enter the first number: ")
    n, err := fmt.Scanln(&number1)
    if n != 1 || err != nil {
        fmt.Println("输入不是有效的浮点数")
        return
    }

    fmt.Print("Enter the second number: ")
    n, err = fmt.Scanln(&number2)
    if n != 1 || err != nil {
        fmt.Println("输入不是有效的浮点数")
        return
    }

    fmt.Print("Enter the operator +, -, *, /, **: ")
    fmt.Scanln(&operator)
}
  • 方法二:读取整行后用strconv.ParseFloat解析
    这种方式更严谨,能处理输入包含非数字字符的情况(比如用户输入"123abc"),不会像Scanln那样只读取前面的有效数字部分,而是直接判定输入无效。

修改后的代码示例:

package main

import (
    "bufio"
    "fmt"
    "math"
    "os"
    "strconv"
)

func main() {
    var number1, number2 float64
    var operator string
    scanner := bufio.NewScanner(os.Stdin)

    fmt.Print("Enter the first number: ")
    scanner.Scan()
    input := scanner.Text()
    num1, err := strconv.ParseFloat(input, 64)
    if err != nil {
        fmt.Println("输入不是有效的浮点数")
        return
    }
    number1 = num1

    fmt.Print("Enter the second number: ")
    scanner.Scan()
    input = scanner.Text()
    num2, err := strconv.ParseFloat(input, 64)
    if err != nil {
        fmt.Println("输入不是有效的浮点数")
        return
    }
    number2 = num2

    fmt.Print("Enter the operator +, -, *, /, **: ")
    fmt.Scanln(&operator)
}

内容的提问来源于stack exchange,提问作者thefastest_snail

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 19:05:32