给定这样的 Go 结构:type Color struct { Red int32 `url:"red"` Green int32 `url:"green"` Blue int32 `url:"blue"` Alpha int32 `url:"alpha,omitempty"`}能够将其转换为 URL 查询会很棒,例如:c := Color{ Red: 255, Green: 127,}v, err := MarshalURLQuery(c)fmt.Printf("%s", string(b))其中 v 是一个url.Values实例,产生“ red=255&green=127&blue=0”。当然,Go 肯定已经提供了类似的东西。如何在不重新发明轮子的情况下在 Go 中做到这一点?
1 回答

慕田峪4524236
TA贡献1875条经验 获得超5个赞
是的,gorilla/schema,使用encoder:
package main
import (
"fmt"
"log"
"net/url"
"github.com/gorilla/schema"
)
type Person struct {
Name string `schema:"name"`
Lastname string `schema:"lastname"`
}
func main() {
person := &Person{Name: "John", Lastname: "Doe"}
encoder := schema.NewEncoder()
v2 := url.Values{}
if err := encoder.Encode(person, v2); err != nil {
log.Fatal(err)
}
fmt.Println(v2.Encode())
}
输出:
lastname=Doe&name=John
https://play.golang.org/p/0_7879f5BES
- 1 回答
- 0 关注
- 117 浏览
添加回答
举报
0/150
提交
取消