当前位置: 首页 > 面试题库 >

Go中的ToString()函数

梁宪
2023-03-14
问题内容

strings.Join函数仅采用字符串切片:

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

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

type ToStringConverter interface {
    ToString() string
}

Go中是否有类似的东西,还是我必须int用ToString方法来修饰现有类型并编写一个包装器strings.Join

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

问题答案:

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


 类似资料:
  • 问题内容: 我有一个结构,我希望使用一些合理的默认值对其进行初始化。 通常,这里要做的是使用构造函数,但是由于go在传统意义上并不是真正的OOP,所以它们不是真正的对象,也没有构造函数。 我注意到了init方法,但这是在包级别。还有其他类似的东西可以在结构级别使用吗? 如果不是,那么Go中这种事情的公认最佳实践是什么? 问题答案: 实际上有两种公认的最佳实践: 将结构的零值设为明智的默认值。(尽管

  • 问题内容: 我正在学习中,文档和交互式课程说,空可以容纳任何类型,因为它不需要其他实现的方法。 举个例子: …将打印出来… 因此,我想我的问题是这是实现通用函数的方法,还是还有另一种更合适的方法来实现它们。 问题答案: Go范式通常是通过在非空接口中实现行为来避免这种情况。例如,假设您要打印特定于类型的格式的内容: 或者,您可以为知道如何进行字符串自身设置的接口定义一个接口(该接口在库中以形式存在

  • 本文来介绍 Go 语言中的函数。Go 语言的函数和其它语言的用法类似,但是 Go 语言中所有东西都是变量,包括函数,函数在 Go 语言中也是变量的一种,所以函数名的命名规则和变量名相同,同时这个和我们后面要讲解的函数式编程有关,目前本文仅介绍 Go 语言中函数的声明和使用。 1. 函数的定义和使用 Go 语言中,通过 func 关键字来声明和定义函数。Go 语言和 C 语言不同,Go 语言函数的声

  • 问题内容: 我想做的是将一个日期传递到Calendar中,以便它将日期格式设置为可与另一个构造函数一起使用。这样我以后可以使用日历提供的功能来使用它。 tostring方法。 日期:java.util.GregorianCalendar [time = ?, areFieldsSet = false,areAllFieldsSet = true,lenient = true 而不是日期:20/10

  • 属性是可配置的,并且可以重写,但是如果我尝试

  • 在 Go 语言中的 defer 关键字就是 Go 语言中延迟语句的标志。Go 语言会在函数即将返回时按逆序执行 defer 后的语句。也就是说先被 defer 的语句后执行,最先执行最后被 defer 的语句。defer 和有些语言中的 finally 语句块的用法类似,一般都用于释放一些资源,最常用的地方就是进程锁的释放。 Tips:关于 defer 的进程锁的释放在 Go 语言的多线程中会有介