gpt4 book ai didi

go - 从自定义字符串类型获取原始值

转载 作者:行者123 更新时间:2023-12-01 22:04:30 25 4
gpt4 key购买 nike

package main

import (
"fmt"
"strings"
)

type AssetID string

func main() {
p := AssetID("photo")
fmt.Printf("%s\n", p)
fmt.Printf("%q\n", p)
fmt.Printf("%v\n", p)
fmt.Printf("%+v\n", p)
fmt.Printf("%#v\n", p)
fmt.Println(strings.Trim(fmt.Sprintf("%#v", p), `"`))
}

func (aid AssetID) String() string {
switch aid {
case "photo":
return "Photos!"
default:
return "Unknown asset ID"
}
}
(来源: https://play.golang.org/p/YU70wWtws4N)
我在我的 html/template 中使用这些 AssetID设置。但是当我想转 []AssetID时出现问题转换成 HTML <select>陈述。
我想要的是:
<select>
<option value="photo">Photos!</option>
</select>
我得到的(没有上面示例中的特殊 printf 内容。):
<select>
<option value="Photos!">Photos!</option>
</select>
还有其他方法可以解决这个问题吗?
编辑:更多信息;
我想要两者兼得,而且我希望保持 Stringer 功能正常工作,这样我就可以使用 //go generate stringer .
我同意答案是;这是不可能的。

最佳答案

问题是您(显然是不经意间)实现了 fmt.Stringer 接口(interface),其中fmt.Sprintf用于格式化值。
通过添加带有签名 String() string 的函数你是类型,你在告诉 fmt.Sprintf调用该函数来格式化它。
解决问题的最简单方法是将函数重命名为其他名称。也许:

func (aid AssetID) Description() string {
switch aid {
case "photo":
return "Photos!"
default:
return "Unknown asset ID"
}
}

关于go - 从自定义字符串类型获取原始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62815758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com