Go印出struct的格式化字串的方式如下。
使用fmt.Printf()
搭配格式化符號%v
、%+v
、%#v
即印出struct的格式化內容。
%v
- 印出欄位型設格式化的值。%+v
- 印出欄位名稱及欄位型態格式化的值。%#v
- 印出Go語法表示的值。
main.go
package main
import (
"fmt"
"time"
)
type Employee struct {
ID int64 // default format %d
Name string // default format %s
Age int // default format %d
IsDeleted bool // default format %t
CreatedAt time.Time // default format %v
}
func main() {
emp := Employee{
ID: 1,
Name: "John",
Age: 33,
IsDeleted: false,
CreatedAt: time.Now(),
}
fmt.Printf("%v\n", emp) // {1 John 33 false 2022-06-26 11:22:57.396769 +0800 CST m=+0.000364415}
fmt.Printf("%+v\n", emp) // {ID:1 Name:John Age:33 IsDeleted:false CreatedAt:2022-06-26 11:22:57.396769 +0800 CST m=+0.000364415}
fmt.Printf("%#v\n", emp) // main.Employee{ID:1, Name:"John", Age:33, IsDeleted:false, CreatedAt:time.Date(2022, time.June, 26, 11, 22, 57, 396769000, time.Local)}
}
若只需要產生格式化字串,則使用fmt.Sprintf()
。
main.go
package main
import (
"fmt"
"time"
)
type Employee struct {
ID int64
Name string
Age int
IsDeleted bool
CreatedAt time.Time
}
func main() {
emp := Employee{
ID: 1,
Name: "John",
Age: 33,
IsDeleted: false,
CreatedAt: time.Now(),
}
s := fmt.Sprintf("%v\n", emp) // create formatted struct string
fmt.Print(s) // // {1 John 33 false 2022-06-26 11:22:57.396769 +0800 CST m=+0.000364415}
}
若要自訂輸出字串可實作fmt.Stringer
介面。
沒有留言:
張貼留言