登录
首页 >  Golang >  Go问答

使用 Stringer 接口重写自定义类型(字节)的字符串方法

来源:stackoverflow

时间:2024-04-17 11:12:35 242浏览 收藏

IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《使用 Stringer 接口重写自定义类型(字节)的字符串方法》,聊聊,我们一起来看看吧!

问题内容

我正在官方的“a tour of go”页面上执行一些任务。我定义了一个自定义类型 ipaddr ,其类型为 byte[4]

假设 ipaddr 类型的值为 {127, 2, 0, 1}

我需要重写 string() 方法,以便以 127.2.0.1 的形式打印,而不是 [127, 2, 0, 1]

这是代码以及我陷入困境的地方:

package main

import "fmt"

type IPAddr [4]byte

func (p IPAddr) String() string {
   return string(p[0]) + "." + string(p[1]) + "." + string(p[2]) + "." + string(p[3]) // this here does not work. 
   //Even if I simply return p[0] nothing is returned back.
}

func main() {
    a := IPAddr{127, 2, 54, 32}
    fmt.Println("a:", a)
}

解决方案


通过使用字符串转换,值会以您不希望的方式进行转换。您可以注意到 54 打印为 6,因为 54 的 ascii 值对应于“6”。

这是一种使用 fmt 获得预期结果的方法。

package main

import "fmt"

type IPAddr [4]byte

func (p IPAddr) String() string {
   return fmt.Sprintf("%d.%d.%d.%d", p[0], p[1], p[2], p[3]) 
}

func main() {
    a := IPAddr{127, 2, 54, 32}
    fmt.Println("a:", a)
}

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《使用 Stringer 接口重写自定义类型(字节)的字符串方法》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>