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)
Я использую эти AssetID в своей настройке html/template
. Но проблема возникает, когда я хочу превратить []AssetID
в оператор HTML <select>
.
Что я хочу:
<select>
<option value="photo">Photos!</option>
</select>
Что я получаю (без специального материала printf в примере выше.):
<select>
<option value="Photos!">Photos!</option>
</select>
Есть ли другой способ исправить это?
Изменить: дополнительная информация; Я хотел бы иметь оба, и я хотел, чтобы в идеале функциональность Stringer работала, чтобы я мог использовать //go generate stringer
. Я согласен с тем, что ответ будет; на самом деле это невозможно.