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

如何横向并排打印二维ASCII字符(Golang实现)

解决ASCII字符横向并排打印问题

核心思路

每个ASCII字符固定为8行高度,直接按行遍历拼接即可实现横向并排:循环遍历0到7行,每一行依次取出输入字符串中每个字符对应的ASCII行,拼接成整行后打印,重复8次完成输出。

代码修改示例

假设你的ASCII字符表定义为map[rune][]string(每个字符对应8行字符串),修改打印逻辑如下:

package main

import (
    "fmt"
    "os"
    "strings"
)

// 示例ASCII字符表,每个字符对应8行内容
var Table = map[rune][]string{
    'h': {" ██  ", "█  █ ", "█    ", "████ ", "█  █ ", "█  █ ", "█  █ ", "████ "},
    'e': {"████ ", "█    ", "█    ", "████ ", "█    ", "█    ", "█    ", "████ "},
    'l': {"█    ", "█    ", "█    ", "█    ", "█    ", "█    ", "█    ", "████ "},
    'o': {" ██  ", "█  █ ", "█  █ ", "█  █ ", "█  █ ", "█  █ ", "█  █ ", " ██  "},
}

func main() {
    if len(os.Args) < 2 {
        fmt.Println("请输入测试字符串,例如:go run . \"hello\"")
        return
    }
    input := os.Args[1]
    chars := []rune(input)

    // 遍历8行,逐行拼接所有字符的对应行
    for row := 0; row < 8; row++ {
        var lineBuilder strings.Builder
        for _, c := range chars {
            asciiLines, exists := Table[c]
            if !exists {
                // 处理未定义字符,用等宽空格占位
                placeholder := strings.Repeat(" ", len(Table['h'][row]))
                lineBuilder.WriteString(placeholder + " ")
                continue
            }
            // 拼接当前字符的第row行,加空格分隔字符
            lineBuilder.WriteString(asciiLines[row] + " ")
        }
        fmt.Println(lineBuilder.String())
    }
}

关键注意事项

  • 确保Table中每个字符对应的[]string长度严格为8,避免索引越界 panic
  • 用strings.Builder代替直接字符串拼接,提升长字符串处理性能
  • 增加未知字符的占位逻辑,避免程序因未定义字符崩溃

运行go run . "hello"即可得到横向并排的ASCII字符输出。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 17:31:15