剛接觸Go時,看別人的程式碼會出現類似下面的struct,但又搞不懂能做什麼
type Person struct {
Name string `form:"name"`
Address string `form:"address"`
}
在整理json資料或者form資料時會常用到,會自動幫你把值bind進去新實例的struct,如:
package main
import (
"encoding/json"
"fmt"
"os"
"time"
)
type User struct {
Name string `json: "name"`
Password string `json: "password"`
PreferredFish []string `json: "preferredFish,omitempty"`
CreatedAt time.Time `json: "createdAt"`
}
func main() {
u := &User{
Name: "Sam chen",
Password: "9527",
CreatedAt: time.Now(),
}
out, err := json.MarshalIndent(u, "", " ")
if err != nil {
log.Println(err)
os.Exit(1)
}
fmt.Println(string(out))
}
//{
//"Name": "Sam chen",
//"Password": "9527",
//"PreferredFish": null,
//"CreatedAt": "2009-11-10T23:00:00Z"
//}
另外,後面的tag也可以指定該參數的行為,適合用在form表驗證參數的屬性使用,如
type LoginForm struct {
Account string `form:"account" binding:"required"`
Password string `form:"password" binding:"required"`
}
如此一來,當要實例LoginForm
時,必須帶入account
與password
的值
當有些程式碼想實驗,但剛好沒有這個環境,你可以使用官方的工具操作
參考:
How To Use Struct Tags in Go