Go 中的 ToString() 函数

新手上路,请多包涵

strings.Join 函数只接受字符串片段:

 s := []string{"foo", "bar", "baz"}
fmt.Println(strings.Join(s, ", "))

但是能够传递实现 ToString() 函数的任意对象会很好。

 type ToStringConverter interface {
    ToString() string
}

Go 中是否有类似的东西,或者我是否必须使用 ToString 方法装饰现有类型,如 int 并围绕 strings.Join 编写包装器?

 func Join(a []ToStringConverter, sep string) string

原文由 deamon 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.5k
2 个回答

String() string 方法附加到任何命名类型并享受任何自定义“ToString”功能:

 package main

import "fmt"

type bin int

func (b bin) String() string {
        return fmt.Sprintf("%b", b)
}

func main() {
        fmt.Println(bin(42))
}

游乐场: http ://play.golang.org/p/Azql7_pDAA


输出

101010

原文由 zzzz 发布,翻译遵循 CC BY-SA 3.0 许可协议

当您拥有自己的 struct 时,您可以拥有自己的 转换为字符串的 功能。

 package main

import (
    "fmt"
)

type Color struct {
    Red   int `json:"red"`
    Green int `json:"green"`
    Blue  int `json:"blue"`
}

func (c Color) String() string {
    return fmt.Sprintf("[%d, %d, %d]", c.Red, c.Green, c.Blue)
}

func main() {
    c := Color{Red: 123, Green: 11, Blue: 34}
    fmt.Println(c) //[123, 11, 34]
}

原文由 Rio 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏