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

如何使用Go标准库设置文本颜色:按数值正负显示红绿

用Go标准库实现终端文本颜色区分

嘿,这个需求完全可以通过ANSI转义序列来实现,不需要任何第三方包——毕竟现代终端几乎都支持这套标准的文本控制码。

核心原理

终端通过特定的转义字符序列来改变文本样式,其中:

  • 红色前景色:\033[31m
  • 绿色前景色:\033[32m
  • 重置所有样式(必须加!不然后续文本都会保持颜色):\033[0m

修改后的代码实现

直接把这些转义码嵌入到你要打印的字符串里就行,甚至可以定义常量让代码更清晰:

package main

import "fmt"

// 定义颜色常量提升可读性
const (
    colorRed   = "\033[31m"
    colorGreen = "\033[32m"
    colorReset = "\033[0m"
)

func main() {
    x := -3 // 可以换成正数、0测试不同情况
    if x < 0 {
        fmt.Printf("%sThis line will be Red%s\n", colorRed, colorReset)
        // 或者用fmt.Println:fmt.Println(colorRed + "This line will be Red" + colorReset)
    } else if x > 0 {
        fmt.Printf("%sThis line will be Green%s\n", colorGreen, colorReset)
    } else {
        fmt.Println("This line uses default terminal color")
    }
}

注意事项

  1. 必须加重置码:如果省略colorReset,后续所有终端输出都会保持当前颜色,这通常不是你想要的结果。
  2. 终端兼容性:旧版Windows命令提示符(cmd.exe)可能不支持ANSI转义码,但Windows Terminal、PowerShell,以及Linux/macOS的所有主流终端都完美支持。如果必须兼容旧cmd,那得调用Windows系统API,但这超出了标准库范围——不过一般现代场景下不需要考虑这个。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:22:13