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
相关产品推荐
相关产品推荐

