KO
|
EN
gitlite — search
Search
#python
#react
#html5
#css
#css3
#machine-learning
#reactjs
#javascript
#php
#golang
#typescript
#flutter
gtag
★ 24
Open GitHub ↗
Help you to get golang struct's tags elegantly.
Download README (.md)
Explore Similar Repositories
go-reflectx
:
Go reflection library to find struct field by its tag
tagfmt
:
Tagfmt formats struct tag within Go programs.
go-tagger.nvim
:
Lightweight Neovim plugin to manage struct field tags in Go source files.
hamr
:
The Go framework for building MCP servers. Your struct tags are your schema.
filler
:
fill struct data easily with fill tags
// repository documentation
Was this content helpful?
★ 0
(0 ratings)
Select Rating:
★
★
★
★
★
Submit Feedback
Recent Feedback
×
Download README
Do you want to download the
README.md
file for
gtag
?
Download (.md)
# gtag <img src="./assets/gtag.png" width="130" alt="gtag logo"> [](https://pkg.go.dev/github.com/wolfogre/gtag) [](https://github.com/wolfogre/gtag/actions) [](https://codecov.io/gh/wolfogre/gtag) [](https://goreportcard.com/report/github.com/wolfogre/gtag) [](https://github.com/wolfogre/gtag/blob/master/go.mod) [](https://github.com/wolfogre/gtag/releases) Help you to get golang struct's tags elegantly. ## Quick start ### 1. Define your struct A source file `user.go`: ```go package tutorial type User struct { Id int `bson:"_id"` Name string `bson:"name"` Email string `bson:"email"` } ``` ## 2. Run gtag Run ```bash go run github.com/wolfogre/gtag/cmd/gtag -types User -tags bson . ``` and you will get file user_tag.go: ```go // Code generated by gtag. DO NOT EDIT. // See: https://github.com/wolfogre/gtag //go:generate go run github.com/wolfogre/gtag/cmd/gtag -types User -tags bson . package tutorial import ( "reflect" "strings" ) var ( // ... ) // UserTags indicate tags of type User type UserTags struct { Id string // `bson:"_id"` Name string // `bson:"name"` Email string // `bson:"email"` } // Tags return specified tags of User func (*User) Tags(tag string, convert ...func(string) string) UserTags { conv := func(in string) string { return strings.TrimSpace(strings.Split(in, ",")[0]) } if len(convert) > 0 { conv = convert[0] } if conv == nil { conv = func(in string) string { return in } } return UserTags{ Id: conv(tagOfUserId.Get(tag)), Name: conv(tagOfUserName.Get(tag)), Email: conv(tagOfUserEmail.Get(tag)), } } // TagsBson is alias of Tags("bson") func (*User) TagsBson() UserTags { var v *User return v.Tags("bson") } ``` ## 3. Use it Now you can use the generated code to get tags elegantly: ```go // update mongo document obj := User{} tags := obj.TagsBson() _, err := collection.UpdateOne( ctx, bson.M{tags.Id: id}, bson.M{ "$set", bson.M{ tags.Name: name, tags.Email: email, }, }, ) ``` ## Project status Gtag is beta and is considered feature complete.