美观打印字节数组和字符数组的Go语言教程

美观打印字节数组和字符数组的go语言教程

本文介绍了如何在Go语言中优雅地打印字节数组和字符数组,并展示了如何利用Stringer接口自定义类型的字符串表示形式,避免使用反射,提升代码效率和可读性。通过实现Stringer接口,我们可以轻松地控制结构体和数组的打印格式,使得输出更加清晰易懂。

在Go语言中,自定义类型的字符串表示形式对于调试和日志记录至关重要。默认情况下,fmt.Println等函数会打印类型的默认表示形式,这可能不够直观。本文将介绍如何使用Stringer接口,以及如何处理字节数组和字符数组的打印问题,提供更清晰、更易于理解的输出。

使用 Stringer 接口

Stringer 是一个接口类型,定义如下:

type Stringer interface {    String() string}

如果一个类型实现了 Stringer 接口,那么当使用 fmt.Println 或 fmt.Printf 的 %s 格式化动词时,会自动调用该类型的 String() 方法。这使得我们可以自定义类型的字符串表示形式。

立即学习“go语言免费学习笔记(深入)”;

示例:自定义 THeader 和 TBody 的字符串表示

假设我们有以下结构体:

大师兄智慧家政 大师兄智慧家政

58到家打造的AI智能营销工具

大师兄智慧家政 99 查看详情 大师兄智慧家政

type Char bytetype THeader struct {    Ver int8    Tag Char}type TBody struct {    B1 [3]byte    B2 [4]Char}

要自定义它们的字符串表示,我们可以实现 Stringer 接口:

func (t THeader) String() string {    return fmt.Sprintf("{ Ver: %d, Tag: %c }", t.Ver, t.Tag)}func (t TBody) String() string {    return fmt.Sprintf("{ B1: %v, B2: %s }", t.B1, CharSlice(t.B2[:]))}

在上面的代码中,THeader 的 String() 方法使用 fmt.Sprintf 格式化输出 Ver 和 Tag 字段。对于 TBody,我们使用了 CharSlice 类型,稍后会介绍。

处理字符数组和字节数组

直接打印字符数组和字节数组可能会得到不期望的结果。为了更好地控制输出,我们可以定义新的类型,并为它们实现 Stringer 接口。

type CharSlice []Chartype ByteSlice []bytefunc (s CharSlice) String() string {    ret := "\""    for _, b := range s {        ret += fmt.Sprintf("%c", b)    }    ret += "\""    return ret}func (s ByteSlice) String() string {    return fmt.Sprintf("%v", []byte(s))}

CharSlice 将字符数组转换为字符串,并在两端添加双引号。ByteSlice 将字节数组转换为切片,并使用默认的切片打印格式。

完整代码示例

package mainimport (    "fmt")type Char bytetype CharSlice []Chartype ByteSlice []bytefunc (s CharSlice) String() string {    ret := "\""    for _, b := range s {        ret += fmt.Sprintf("%c", b)    }    ret += "\""    return ret}func (s ByteSlice) String() string {    return fmt.Sprintf("%v", []byte(s))}type THeader struct {    Ver int8    Tag Char}func (t THeader) String() string {    return fmt.Sprintf("{ Ver: %d, Tag: %c }", t.Ver, t.Tag)}type TBody struct {    B1 [3]byte    B2 [4]Char}func (t TBody) String() string {    return fmt.Sprintf("{ B1: %s, B2: %s }", ByteSlice(t.B1[:]), CharSlice(t.B2[:]))}func main() {    th := THeader{1, 'H'}    fmt.Printf("%#v\n", th)    tb := TBody{B2: [4]Char{'A', 'B', 'C', 'D'}}    fmt.Printf("%#v\n", tb)    fmt.Printf("Txt(th):\n%s\n", th)    fmt.Printf("Txt(tb):\n%s\n", tb)}

注意事项

切片转换: 在将数组传递给 ByteSlice 和 CharSlice 时,需要使用切片操作 [:]。例如,ByteSlice(t.B1[:])。性能: 虽然 fmt.Sprintf 提供了强大的格式化功能,但在性能敏感的场景中,可以考虑使用 strings.Builder 来构建字符串。错误处理: 在实际应用中,应该考虑错误处理,例如在处理字符数组时,确保字符的有效性。

总结

通过实现 Stringer 接口,我们可以自定义Go语言中类型的字符串表示形式,从而获得更清晰、更易于理解的输出。对于字节数组和字符数组,我们可以定义新的类型,并为它们实现 Stringer 接口,以控制它们的打印格式。这种方法避免了使用反射,提高了代码的可读性和效率。

以上就是美观打印字节数组和字符数组的Go语言教程的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1144871.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月2日 19:12:39
下一篇 2025年12月2日 19:13:00

相关推荐

  • 什么是稳定币?在哪些交易所可以购买

    稳定币(Stablecoin)是一种特殊类型的加密货币,其设计目标是将价格稳定在某一特定资产(通常是法定货币,如美元)上。不同于比特币、以太坊这类价格波动较大的加密货币,稳定币通过多种机制保障其价格的相对稳定,常见的稳定币锚定美元,1个稳定币通常等值1美元。 一键直达|2025权威稳定币交易所平台 …

    2025年12月8日 好文分享
    000
  • 好用的加密货币交易平台有哪些

    选择可靠的加密货币交易平台对交易安全和成本控制至关重要。2025年度十大交易所包括:1. OKX,以技术实力和多样交易方式领先;2. Binance,以庞大交易量和生态系统著称;3. Huobi,注重合规并拓展全球业务;4. Coinbase,适合新手的友好平台;5. Kraken,以安全性及透明度…

    2025年12月8日 好文分享
    000
  • OKX、币安、火币:三家稳定币交易所介绍

    OKX、币安、火币:三大稳定币交易所深度解析(2025 年版) 在数字货币市场快速演进的当下,稳定币已从辅助交易的“中介资产”演变为支撑整个 Web3 金融生态的“主心骨”。无论是跨境支付、DeFi 借贷,还是链上理财、资产避险,稳定币都扮演着重要角色。而承担稳定币交易枢纽职责的,正是几家全球领先的…

    2025年12月8日 好文分享
    000
  • 2025稳定币风险点与监管缺口分析 稳定币交易所排行

    稳定币(Stablecoin)作为加密金融体系中的“价值锚”,其核心设计理念是追求币值稳定,通常锚定美元、欧元、人民 币等法币。看似“稳如泰山”的稳定币,在实际运行中却隐藏着多种系统性与监管风险: 一键直达|2025权威稳定币交易所平台 Binance币安 Huobi火币 欧易OKX 1. 储备透明…

    2025年12月8日 好文分享
    000
  • 2025最新稳定币排名 值得购买的稳定币推荐

    在经历了 2022 年 Terra 崩盘、2023 年 FTX 黑天鹅、2024 年全球加密监管初步落地之后,稳定币市场在 2025 年迎来了相对稳健和合规的发展阶段。随着全球合规框架日益成熟,以及投资者对于资产安全性的要求不断提高,稳定币正在从“配角”走向“核心资产”。 那么在当前复杂的市场结构下…

    2025年12月8日
    000
  • 2025 主流稳定币清单大全:USDT、USDC、Dai、USDE、PYUSD 等

    2025 主流稳定币清单:USDT、USDC、DAI、USDE、PYUSD 等全解析 稳定币是连接现实世界与区块链生态的桥梁,是目前交易、借贷、结算、defi 中使用频率最高的币种。进入 2025 年,稳定币种类已从最早的 usdt、usdc,扩展到 pyusd、usde、crvusd、fdusd …

    2025年12月8日
    000
  • 2025币安(Binance)交易所app国内下载教程

    b安交易所下载教程:1、点击页面直达链接https://www.marketwebb.co/zh-CN/join?ref=507720986&type=wenzi;2、打开下载好的安装包,选择无视风险继续安装;3、注册币安交易所,最好使用gmail邮箱;4、完成实名信息验证KYC;5、启用双…

    2025年12月8日 好文分享
    000
  • TRNR获5亿美元支持收购FET!抢攻AI加密货币

    健身镜(运动时可照的智能镜面)制造商Interactive Strength(Nasdaq:TRNR)正将重量级资金地押向加密。 今日该公司宣布,已透过首轮5500万美元投资启动加密资产策略,最终规模上看5亿美元,全数用于买进Fetch.ai(FET)代币。 若计划完成,TRNR可能成为美国上市企业…

    2025年12月8日
    000
  • 2025币安官方网站地址直达

    b安交易所下载教程:1、点击页面直达链接;2、打开下载好的安装包,选择无视风险继续安装;3、注册币安交易所,最好使用gmail邮箱;4、完成实名信息验证KYC;5、启用双重身份验证2FA;6、充值USDT或USDC进行购买即可。 由于政策限制,中国大陆用户无法直接在Google Play或国内应用市…

    2025年12月8日 好文分享
    000
  • 2025年币圈公认的交易所推荐

    2025年币圈公认的交易所排名中,Binance、OKX、Huobi位列前三。1. Binance为全球最大交易所,支持600+交易对,提供现货、合约等多种服务,日均交易量超800亿美元;2. OKX以衍生品交易领先,永续合约市场份额达35%,支持Web3生态;3. Huobi作为老牌交易所,具备机…

    2025年12月8日 好文分享
    000
  • 2025稳定币直达购买平台入口_稳定币直购链接地址

    稳定币(Stablecoins)因价格锚定美元、便于入金出金、适配 DeFi 和支付等场景,成为多数投资者入门加密世界的第一步资产。目前购买主流稳定币(如 USDT、USDC、DAI、PYUSD、USDE)的方式已有相当多元:不仅可以通过交易所购入,也能通过直购通道、钱 包集成服务或法币网关实现“一…

    2025年12月8日 好文分享
    000
  • 2025年币圈三大交易所分别是 币圈是三大交易所推荐

    2025年币圈三大交易所是币安(Binance)、欧易OKX和火币(Huobi)。1. 币安以交易品种丰富、系统稳定著称,适合各类投资者,但需关注合规政策;2. 欧易OKX在合约交易方面表现突出,提供教育资源和安全保障,适合对衍生品感兴趣的用户;3. 火币作为老牌交易所,法币入金渠道多、社区活跃,但…

    2025年12月8日
    000
  • 2025 年最新稳定币有哪些? Tether、USDC、USDE…全解析

    稳定币已成为加密世界最关键的基础设施之一。无论是在交易所作为交易对、还是在 DeFi 中用于借贷、抵押、流动性挖矿,它们都扮演着「链上美元」的角色。2025 年,随着 RWA(现实资产上链)、链上结算需求增长,稳定币的种类愈发丰富,功能与合规性也逐步增强。 本文将全面解析 2025 年主流与新兴稳定…

    2025年12月8日
    000
  • 稳定币可以养老吗 有哪些可以养老的稳定币

    稳定币(stablecoin)作为连接传统金融与加密世界的关键桥梁,在2025年继续发挥着重要作用。从最初的usdt、usdc,到新兴的算法稳定币与合成资产,各类稳定币在稳定性、合规性与可组合性方面不断演进。 一键直达|2025权威稳定币交易所平台 Binance币安 Huobi火币 欧易OKX 1…

    2025年12月8日
    000
  • 稳定币特征有哪些?怎么区分稳定币和风险币

    稳定币(Stablecoin)是在区块链中用于对抗价格波动、锚定某种“真实价值”的代币种类。它们大多数锚定美元,也有锚定黄金、欧元、人民 币、甚至 CPI 指数的品种。它们是加密世界中最接近“现金”的存在。但,稳定币≠一定稳定!你能否清楚分辨哪些是“真稳定”、哪些是伪稳定甚至“风险币”?本篇文章将从…

    2025年12月8日
    000
  • 2025 年稳定币指数产品盘点:USDC20、CryptoIndex 等

    随着加密市场日益成熟,投资者对稳定币的需求不仅停留在简单持有和交易阶段,更希望通过指数产品实现多样化风险管理与资产配置。稳定币指数产品应运而生,成为连接稳健资产与金融创新的重要工具。 本文将介绍2025年主流的稳定币指数产品,特别是USDC20、CryptoIndex等代表性项目,解析它们的设计理念…

    2025年12月8日
    000
  • 2025 年稳定币交易所介绍:OKX、币安、火币网 等

    随着稳定币成为加密资产市场中的重要组成部分,各大交易所纷纷加大对稳定币交易及其生态的支持力度。2025年,稳定币不仅是交易媒介,更是defi、支付、跨境转账等多场景的关键资产。本文重点介绍全球三大主流交易所——okx、币安(binance)、火币网(huobi)在稳定币领域的布局与优势,帮助你全面了…

    2025年12月8日 好文分享
    000
  • 2025加密货币交易所排行榜前十名最新

    选择一个可靠且适合自身需求的加密货币交易平台至关重要,能够确保交易安全、降低交易成本,并提供丰富的交易工具和币种选择。1. OKX凭借强大的技术实力、严格的安全措施和多样的交易方式稳居榜首;2. Binance以全球最大的交易量、广泛的币种选择和活跃的社区著称;3. Huobi注重合规运营并积极拓展…

    2025年12月8日 好文分享
    000
  • 2025最新十大虚拟数字货币交易平台软件推荐

    选择可靠的加密货币交易平台至关重要,以确保交易安全、降低成本并提升体验。2025年十大交易所包括:1.OKX,具备强大技术与多种交易方式;2.Binance,交易量大且生态完善;3.Huobi,注重合规与用户拓展;4.Coinbase,适合新手;5.Kraken,安全性高费用低;6.Bitfinex…

    2025年12月8日 好文分享
    000
  • 稳定币特征有哪些 什么是稳定币

    在%ignore_a_1%的世界中,价格波动一直是主流币种(如比特币、以太坊)的一大痛点。为了解决这个问题,一种特殊类别的数字资产——稳定币(stablecoin)应运而生。稳定币因其价格相对稳定、便于交易结算而广泛用于交易所、defi、支付和跨境清算等场景。 一、什么是稳定币? 稳定币(Stabl…

    2025年12月8日
    000

发表回复

登录后才能评论
关注微信