在Go語言中,結構體標簽(Struct Tags)是一種元信息,用于為結構體的字段提供額外的說明。它們通常用于JSON編碼/解碼、數據庫映射等場景。要使用結構體標簽,需要在字段聲明后面加上一個反引號(`),然后包含鍵值對,用冒號分隔。
以下是一些常見的使用場景:
package main
import (
"encoding/json"
"fmt"
)
type Person struct {
Name string `json:"name"`
Age int `json:"age"`
Address string `json:"address,omitempty"`
}
func main() {
p := Person{
Name: "Alice",
Age: 30,
Address: "",
}
data, _ := json.Marshal(p)
fmt.Println(string(data)) // 輸出:{"name":"Alice","age":30}
var p2 Person
_ = json.Unmarshal(data, &p2)
fmt.Println(p2) // 輸出:{Alice 30}
}
在這個例子中,我們為Person
結構體的字段添加了JSON標簽,用于指定JSON編碼時的鍵名。omitempty
選項表示如果字段值為空,則在編碼時忽略該字段。
package main
import (
"fmt"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/sqlite"
)
type User struct {
ID uint `gorm:"primary_key"`
FirstName string `gorm:"column:first_name"`
LastName string `gorm:"column:last_name"`
}
func main() {
db, _ := gorm.Open("sqlite3", "test.db")
defer db.Close()
db.AutoMigrate(&User{})
user := User{FirstName: "John", LastName: "Doe"}
db.Create(&user)
var users []User
db.Find(&users)
fmt.Println(users) // 輸出:[{1 John Doe}]
}
在這個例子中,我們使用GORM庫為User
結構體的字段添加了數據庫映射標簽,用于指定數據庫表中的列名。
這些只是結構體標簽的一些常見用法。你可以根據需要為結構體的字段添加更多的標簽,以滿足不同的需求。