Golang将自定义类型转换为字符串?
问题描述:
在这个奇怪的例子,有人创造了一个新的类型,是真的只是一个字符串:Golang将自定义类型转换为字符串?
type CustomType string
const (
Foobar CustomType = "somestring"
)
func SomeFunction() string {
return Foobar
}
但是,此代码不能编译:
不能使用Foobar的(类型CustomType)类型返回参数中的字符串
如何修复SomeFunction,以便它能够返回Foobar(“somestring”)的字符串值?
答
更好地界定一个String
功能为Customtype
- 它可以让你的生活随着时间的推移更容易 - 你有过东西,如果结构演变更好的控制。如果你真的需要SomeFunction
然后让它回归Foobar.String()
package main
import (
"fmt"
)
type CustomType string
const (
Foobar CustomType = "somestring"
)
func main() {
fmt.Println("Hello, playground", Foobar)
fmt.Printf("%s", Foobar)
fmt.Println("\n\n")
fmt.Println(SomeFunction())
}
func (c CustomType) String() string {
fmt.Println("Executing String() for CustomType!")
return string(c)
}
func SomeFunction() string {
return Foobar.String()
}
创建一个只是一个字符串的类型并不是那么奇怪。例如,如果你知道某个字符串总是一个国家名称,你可以创建一个“国家字符串”类型;这将使代码更易于阅读。 – Akavall