将 Go 结构转换为字符串
Converting Go struct to string
我的代码:
type Link struct {
Href string `xml:"href,attr"`
}
var html Link = ""
func (s Entry) String() string {
links := string(s.Link)
}
我解析了整个 XML 文档以获取链接和文本,现在我想将所有解析的数据附加到 html
变量中以在本地主机上构建一个漂亮的视图。但是 s.Link
无法转换为字符串数据类型可能是因为类型转换只支持基本数据类型,有解决方案吗?
在你的情况下,你不想附加结构 Link
的 string
表示,你只需要它的 Href
字段,它已经是类型 string
.
func (s Entry) LinkString() string {
return s.Link.Href
}
另请注意,如果您使用非指针接收器 Entry
,您的方法 LinkString()
将接收该结构的副本。在这种情况下这不是问题,只是慢了一点,因为必须制作副本。
如果你的结构变大,最好使用指针接收器:*Entry
:
func (s *Entry) LinkString() string {
return s.Link.Href
}
另请注意,您甚至不需要访问 URL 文本的方法,因为您的字段(Entry.Link
和 Link.Href
)已导出,因为它们以大写开头-大小写字母,因此您可以像这样简单地引用它:
// e is of type Entry:
url := e.Link.Href
// url is of type string
我的代码:
type Link struct {
Href string `xml:"href,attr"`
}
var html Link = ""
func (s Entry) String() string {
links := string(s.Link)
}
我解析了整个 XML 文档以获取链接和文本,现在我想将所有解析的数据附加到 html
变量中以在本地主机上构建一个漂亮的视图。但是 s.Link
无法转换为字符串数据类型可能是因为类型转换只支持基本数据类型,有解决方案吗?
在你的情况下,你不想附加结构 Link
的 string
表示,你只需要它的 Href
字段,它已经是类型 string
.
func (s Entry) LinkString() string {
return s.Link.Href
}
另请注意,如果您使用非指针接收器 Entry
,您的方法 LinkString()
将接收该结构的副本。在这种情况下这不是问题,只是慢了一点,因为必须制作副本。
如果你的结构变大,最好使用指针接收器:*Entry
:
func (s *Entry) LinkString() string {
return s.Link.Href
}
另请注意,您甚至不需要访问 URL 文本的方法,因为您的字段(Entry.Link
和 Link.Href
)已导出,因为它们以大写开头-大小写字母,因此您可以像这样简单地引用它:
// e is of type Entry:
url := e.Link.Href
// url is of type string