catface_backend_go/test/explain_test.go

47 lines
1.2 KiB
Go
Raw Normal View History

package test
import (
"fmt"
"reflect"
"strings"
"testing"
"time"
)
// EncounterResult2 结构体定义
type EncounterResult2 struct {
Id int64 `json:"id" explain:"路遇笔记ID"`
Title string `json:"title" explain:"路遇笔记标题"`
Content string `json:"content" explain:"路遇笔记内容"`
UpdatedAt *time.Time `json:"updated_at" explain:"最后更新时间"`
}
// StructToString 使用反射将结构体的内容组织为字符串
func StructToString(v interface{}) string {
val := reflect.ValueOf(v)
typ := val.Type()
var result []string
for i := 0; i < val.NumField(); i++ {
field := typ.Field(i)
tag := field.Tag.Get("explain")
value := val.Field(i).Interface()
result = append(result, fmt.Sprintf("%s%v", tag, value))
}
return strings.Join(result, "")
}
func TestExplain(t *testing.T) {
// 示例数据
updatedAt := time.Date(2023, 10, 1, 12, 0, 0, 0, time.UTC)
encounter := EncounterResult2{
Id: 1,
Title: "遇见小猫",
Content: "今天在公园遇到了一只可爱的小猫。",
UpdatedAt: &updatedAt,
}
// 调用 StructToString 函数
t.Logf("结构体内容:%v", StructToString(encounter))
}