首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Go中的ToString()函数

Go中的ToString()函数
EN

Stack Overflow用户
提问于 2012-11-06 17:02:41
回答 2查看 127K关注 0票数 120

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

代码语言:javascript
复制
s := []string{"foo", "bar", "baz"}
fmt.Println(strings.Join(s, ", "))

但是如果能够传递实现ToString()函数的任意对象就更好了。

代码语言:javascript
复制
type ToStringConverter interface {
    ToString() string
}

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

代码语言:javascript
复制
func Join(a []ToStringConverter, sep string) string
EN

回答 2

Stack Overflow用户

发布于 2021-03-31 23:23:51

这里有一个简单的方法来处理这个问题:

代码语言:javascript
复制
package main

import (
    "fat"
    "strconv"
)

type Person struct {
    firstName, lastName string
    age int
}

func (p Person) GetFullName() string {
    return p.firstName + " " + p.lastName
}

func (p Person) GetAge() int {
    return p.age
}

func (p Person) GetAgeAsString() string {
    return strconv.Itoa(p.age)
}

func main() {
    p := Person {"John", "Doe", 21}
    fmt.Println(p.GetFullName())
    fmt.Println(p.GetAgeAsString())
}

输出:

代码语言:javascript
复制
"John Doe"
"21"
票数 -2
EN

Stack Overflow用户

发布于 2014-12-26 20:47:54

我更喜欢这样的东西:

代码语言:javascript
复制
type StringRef []byte

func (s StringRef) String() string {
        return string(s[:])
}

…

// rather silly example, but ...
fmt.Printf("foo=%s\n",StringRef("bar"))
票数 -7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13247644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档