回答

收藏

Go 中的 ToString() 函数

技术问答 技术问答 474 人阅读 | 0 人回复 | 2023-09-12

该strings.Join函数只使用字符串切片:
7 ?  A$ J; H! n( w8 s2 r, ~
    s := []string{"foo","bar","baz"}fmt.Println(strings.Join(s,","))
    - A& q; @, t1 y% L) L, K2 L" O
但能够传递实现ToString()函数的任何对象都会很好。7 p6 m% A1 r9 r9 Z! j
    type ToStringConverter interface    ToString() string}# l+ l9 z$ m+ P; p
在 Go 有这样的东西,或者我必须像intToString用同样的方法装饰现有的类型,并编写一个包装器strings.Join?
, l! y  p4 W+ k; ^1 H( Z
    func Join(a []ToStringConverter,sep string) string( C  L; d; k% K
               ' m) C, H, F' |* }/ r" W4 m
    解决方案:                                                               
, ]% v. V$ f- W  o                                                                将String() string附加到任何命名类型并享受任何自定义的方法ToString”功能:6 Y0 ?# e% M& W" v# O4 J

    , O9 \# `/ E  y4 r+ x
  • package mainimport "fmt"type bin intfunc (b bin) String() string              return fmt.Sprintf("%b",b)}func main()              fmt.Println(bin(42)code]输出[code]101010, o: b* Y/ A/ P3 N7 @* B  Z& l
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则