前言:

平常在臉書社群或是 Slack channel (https://t.me/golangtw) 都會聽到一些常問的問題,決定把它整理一下,變成這篇文章,也希望讓更多人經過搜尋來了解與得到解答。 由於經常詢問的問題還不少,這算是一個系列的整理,希望能透過整理成文章的方式給予大家比較深入的了解。

第二篇是 Struct Tags ,希望大家在處理 XML 與 JSON 資料上面,能夠更了解。

相關系列文章整理:

Struct Tags:

請問一下,像這種直接在 struct 成員宣告後面放字串的,是什麼語法啊?
type Person struct {
        Name       string    `form:"name"`
        Address    string    `form:"address"`
}
我在官方文件中找不到

這個叫做 struct tags Go Wiki: Well known struct tags,通常是用在 JSON 資料格式定義的時候。 以下拿一個簡單的範例來舉例:

package main

import "fmt"

type User struct {
    Name string `example:"name"`
}

func (u *User) String() string {
    return fmt.Sprintf("Hi! My name is %s", u.Name)
}

func main() {
    u := &User{
        Name: "Sammy",
    }

    fmt.Println(u)
}

(範例來自:How To Use Struct Tags in Go)

https://golang.org/pkg/reflect/ func (StructTag) 那邊有一些範例。

其實 Golang 本身提供不少種類的 Struct Tags , JSON, XML, bson 都算是比較常見的格式。

https://github.com/golang/go/issues/23637

Reference:


Buy Me A Coffee

Evan

Attitude is everything