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

如何在Golang中拦截1-5范围外的用户输入并终止程序?

解决Go程序中输入范围不符合时终止程序的问题

核心解决方案

在Go中,要终止程序有两种常用方式,同时需要先修正原代码的错误处理顺序(原代码先判断范围再处理解析错误,会导致无效输入误触发范围提示):

方式1:使用os.Exit()终止程序(推荐)

os.Exit(n)可以直接终止程序,非0的退出码(比如1)能明确表示程序因异常终止,原代码已导入os包,直接调用即可。

修正后的完整代码:

package main

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

func main() {
    fmt.Println("请为我们的披萨评分(1-5分)")

    reader := bufio.NewReader(os.Stdin)
    // 先处理输入读取错误
    input, err := reader.ReadString('\n')
    if err != nil {
        fmt.Println("读取输入失败:", err)
        os.Exit(1)
    }

    fmt.Println("你输入的评分是:", input)
    convertedInput, err := strconv.ParseFloat(strings.TrimSpace(input), 64)

    // 优先处理数字解析错误
    if err != nil {
        fmt.Println("输入不是有效数字:", err)
        os.Exit(1)
    }

    // 范围判断,不符合则终止程序
    if convertedInput > 5 || convertedInput < 1 {
        fmt.Println("请输入1到5之间的数字")
        os.Exit(1) // 此处终止程序
    }

    // 符合条件的后续逻辑
    fmt.Println("你的最终评分是:", convertedInput)
}

方式2:使用return终止main函数

因为main函数无返回值,在main内调用return也会直接终止程序,但这种方式的退出码为0(表示正常终止),适合不需要区分异常场景的情况:

// 替换范围判断分支的代码
if convertedInput > 5 || convertedInput < 1 {
    fmt.Println("请输入1到5之间的数字")
    return // 终止main函数,程序结束
}

额外优化点

  • 原代码未处理reader.ReadString()的错误,补充后避免输入读取失败时程序继续执行;
  • 修正了原代码中Yourr的拼写错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 19:15:00