Golang将自定义类型转换为字符串?

问题描述:

在这个奇怪的例子,有人创造了一个新的类型,是真的只是一个字符串:Golang将自定义类型转换为字符串?

type CustomType string 

const (
     Foobar CustomType = "somestring" 
) 

func SomeFunction() string { 
     return Foobar 
} 

但是,此代码不能编译:

不能使用Foobar的(类型CustomType)类型返回参数中的字符串

如何修复SomeFunction,以便它能够返回Foobar(“somestring”)的字符串值?

+1

创建一个只是一个字符串的类型并不是那么奇怪。例如,如果你知道某个字符串总是一个国家名称,你可以创建一个“国家字符串”类型;这将使代码更易于阅读。 – Akavall

Convert值转换为字符串:

func SomeFunction() string { 
     return string(Foobar) 
} 

更好地界定一个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() 
    } 

https://play.golang.org/p/jMKMcQjQj3

你可以这样转换:

var i int = 42 var f float64 = float64(i)

检查here

可以返回这样的:

return string(Foobar)