{"id":13396864,"url":"https://github.com/fatih/gomodifytags","last_synced_at":"2025-07-18T09:37:36.036Z","repository":{"id":37396852,"uuid":"78461005","full_name":"fatih/gomodifytags","owner":"fatih","description":"Go tool to modify struct field tags","archived":false,"fork":false,"pushed_at":"2025-04-23T14:27:48.000Z","size":178,"stargazers_count":2342,"open_issues_count":12,"forks_count":137,"subscribers_count":20,"default_branch":"main","last_synced_at":"2025-06-23T17:50:15.239Z","etag":null,"topics":["go","golang","structs","tags","tool"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fatih.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2017-01-09T19:24:51.000Z","updated_at":"2025-06-23T10:38:09.000Z","dependencies_parsed_at":"2024-11-18T17:01:10.423Z","dependency_job_id":"c32866be-2664-4ec4-b580-a44dcde80209","html_url":"https://github.com/fatih/gomodifytags","commit_stats":{"total_commits":75,"total_committers":22,"mean_commits":3.409090909090909,"dds":0.3866666666666667,"last_synced_commit":"0af24e19f5a325b1e6ef83692b8946b546491586"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/fatih/gomodifytags","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fatih%2Fgomodifytags","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fatih%2Fgomodifytags/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fatih%2Fgomodifytags/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fatih%2Fgomodifytags/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fatih","download_url":"https://codeload.github.com/fatih/gomodifytags/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fatih%2Fgomodifytags/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265735491,"owners_count":23819755,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","golang","structs","tags","tool"],"created_at":"2024-07-30T18:01:05.290Z","updated_at":"2025-07-18T09:37:35.949Z","avatar_url":"https://github.com/fatih.png","language":"Go","readme":"# gomodifytags [![](https://github.com/fatih/gomodifytags/workflows/build/badge.svg)](https://github.com/fatih/gomodifytags/actions)\n\nGo tool to modify/update field tags in structs. `gomodifytags` makes it easy to\nupdate, add or delete the tags in a struct field. You can easily add new tags,\nupdate existing tags (such as appending a new key, i.e: `db`, `xml`, etc..) or\nremove existing tags. It also allows you to add and remove tag options. It's\nintended to be used by an editor, but also has modes to run it from the\nterminal. Read the usage section below for more information.\n\n![gomodifytags](https://user-images.githubusercontent.com/438920/32691304-a1c7e47c-c716-11e7-977c-f4d0f8c616be.gif)\n\n\n# Install\n\n```bash\ngo install github.com/fatih/gomodifytags@latest\n```\n\n# Supported editors\n\n* [vim-go](https://github.com/fatih/vim-go) with `:GoAddTags` and `:GoRemoveTags`\n* [go-plus (atom)](https://github.com/joefitzgerald/go-plus) with commands `golang:add-tags` and `golang:remove-tags`\n* [vscode-go](https://github.com/golang/vscode-go) with commands `Go: Add Tags` and `Go: Remove Tags`\n* [A (Acme)](https://github.com/davidrjenni/A) with commands `addtags` and `rmtags`\n* [emacs-go-tag](https://github.com/brantou/emacs-go-tag) with commands `go-tag-add` and `go-tag-remove`\n* [TextMate2](https://github.com/vigo/textmate2-gomodifytags)\n\n# Usage\n\n`gomodifytags` has multiple ways to modify a tag. Let's start with an example package:\n\n```go\npackage main\n\ntype Server struct {\n\tName        string\n\tPort        int\n\tEnableLogs  bool\n\tBaseDomain  string\n\tCredentials struct {\n\t\tUsername string\n\t\tPassword string\n\t}\n}\n```\n\nWe have to first pass a file. For that we can use the `-file` flag:\n\n```sh\n$ gomodifytags -file demo.go\n-line, -offset, -struct or -all is not passed\n```\n\nWhat are these? There are four different ways of defining **which** field tags\nto change:\n\n* `-struct`: This accepts the struct name. i.e: `-struct Server`. The name\n  should be a valid type name. The `-struct` flag selects the whole struct, and\n  thus it will operate on all fields.\n* `-field`: This accepts a field name. i.e: `-field Address`. Useful to select\n  a certain field. The name should be a valid field name. The `-struct` flag is required.\n* `-offset`: This accepts a byte offset of the file. Useful for editors to pass\n  the position under the cursor. i.e: `-offset 548`. The offset has to be\n  inside a valid struct. The `-offset` selects the whole struct. If you need\n  more granular option see `-line`\n* `-line`: This accepts a string that defines the line or lines of which fields\n  should be changed. I.e: `-line 4` or `-line 5,8`\n* `-all`: This is a boolean. The `-all` flag selects all structs of the given file.\n\nLet's continue by using the `-struct` tag:\n\n```\n$ gomodifytags -file demo.go -struct Server\none of [-add-tags, -add-options, -remove-tags, -remove-options, -clear-tags, -clear-options] should be defined\n```\n\n## Adding tags \u0026 options\n\nThere are many options on how you can change the struct. Let us start by adding\ntags. The following will add the `json` key to all fields. The value will be\nautomatically inherited from the field name and transformed to `snake_case`:\n\n```\n$ gomodifytags -file demo.go -struct Server -add-tags json\n```\n```go\npackage main\n\ntype Server struct {\n\tName        string `json:\"name\"`\n\tPort        int    `json:\"port\"`\n\tEnableLogs  bool   `json:\"enable_logs\"`\n\tBaseDomain  string `json:\"base_domain\"`\n\tCredentials struct {\n\t\tUsername string `json:\"username\"`\n\t\tPassword string `json:\"password\"`\n\t} `json:\"credentials\"`\n}\n```\n\nBy default changes will be printed to stdout and can be used for dry-run your\nchanges before making destructive changes. If you want to change it permanently,\npass the `-w` (write) flag.\n\n```\n$ gomodifytags -file demo.go -struct Server -add-tags json -w\n```\n\nYou can disable printing the results to stdout with the `--quiet` flag:\n\n```\n$ gomodifytags -file demo.go -struct Server -add-tags json -w --quiet\n```\n\nYou can pass multiple keys to add tags. The following will add `json` and `xml`\nkeys:\n\n```\n$ gomodifytags -file demo.go -struct Server -add-tags json,xml\n```\n```go\npackage main\n\ntype Server struct {\n\tName        string `json:\"name\" xml:\"name\"`\n\tPort        int    `json:\"port\" xml:\"port\"`\n\tEnableLogs  bool   `json:\"enable_logs\" xml:\"enable_logs\"`\n\tBaseDomain  string `json:\"base_domain\" xml:\"base_domain\"`\n\tCredentials struct {\n\t\tUsername string `json:\"username\" xml:\"username\"`\n\t\tPassword string `json:\"password\" xml:\"password\"`\n\t} `json:\"credentials\" xml:\"credentials\"`\n}\n```\n\nThe default transformation is `snake_case` when using the gomodifytags command\nand when calling Apply() - see section below for more information about Apply().\n\nIf you prefer to use `camelCase` instead of `snake_case` for the values, you\ncan use the `-transform` flag to define a different transformation rule. The\nfollowing example uses the `camelcase` transformation rule:\n\n\n```\n$ gomodifytags -file demo.go -struct Server -add-tags json,xml -transform camelcase\n```\n```go\npackage main\n\ntype Server struct {\n\tName        string `json:\"name\" xml:\"name\"`\n\tPort        int    `json:\"port\" xml:\"port\"`\n\tEnableLogs  bool   `json:\"enableLogs\" xml:\"enableLogs\"`\n\tBaseDomain  string `json:\"baseDomain\" xml:\"baseDomain\"`\n\tCredentials struct {\n\t\tUsername string `json:\"username\" xml:\"username\"`\n\t\tPassword string `json:\"password\" xml:\"password\"`\n\t} `json:\"credentials\" xml:\"credentials\"`\n}\n```\n\n### Formatting tag values\n\nBy default a struct tag's value is transformed from a struct's field and used\ndirectly. As an example for the field `Server string`, we generate a tag in the\nform: `json:\"server\"` (assuming `-add-tags=json` is used).\n\nHowever, some third party libraries use tags in a different way and might\nrequire to them to have a particular formatting, such as is the case of\nprefixing them (`field_name=\u003cyour_value\u003e`). The `--template` flag allows you to\nspecify a custom format for the tag value to be applied.\n\n```\n$ gomodifytags -file demo.go -struct Server -add-tags gaum -template \"field_name={field}\" \n```\n\n```go\npackage main\n\ntype Server struct {\n\tName        string `gaum:\"field_name=name\"`\n\tPort        int    `gaum:\"field_name=port\"`\n\tEnableLogs  bool   `gaum:\"field_name=enableLogs\"`\n\tBaseDomain  string `gaum:\"field_name=baseDomain\"`\n}\n```\n\nThe `{field}` word is a special keyword that is replaced by the struct tag's value\n**after** the [transformation](https://github.com/fatih/gomodifytags#transformations). \n\n### Transformations\n\nWe currently support the following transformations:\n\n* `snakecase`: `\"BaseDomain\"` -\u003e `\"base_domain\"`\n* `camelcase`: `\"BaseDomain\"` -\u003e `\"baseDomain\"`\n* `lispcase`:  `\"BaseDomain\"` -\u003e `\"base-domain\"`\n* `pascalcase`:  `\"BaseDomain\"` -\u003e `\"BaseDomain\"`\n* `titlecase`:  `\"BaseDomain\"` -\u003e `\"Base Domain\"`\n* `keep`:  keeps the original field name\n\nYou can also pass a static value for each fields. This is useful if you use Go\npackages that validates the struct fields or extract values for certain\noperations. The following example adds the `json` key, a `validate` key with\nthe value set to `gt=1` and the `scope` key with the value `read-only`:\n\n```\n$ gomodifytags -file demo.go -struct Server -add-tags json,validate:gt=1,scope:read-only\n```\n```go\npackage main\n\ntype Server struct {\n\tName        string `json:\"name\" validate:\"gt=1\" scope:\"read-only\"`\n\tPort        int    `json:\"port\" validate:\"gt=1\" scope:\"read-only\"`\n\tEnableLogs  bool   `json:\"enable_logs\" validate:\"gt=1\" scope:\"read-only\"`\n\tBaseDomain  string `json:\"base_domain\" validate:\"gt=1\" scope:\"read-only\"`\n\tCredentials struct {\n\t\tUsername string `json:\"username\" validate:\"gt=1\" scope:\"read-only\"`\n\t\tPassword string `json:\"password\" validate:\"gt=1\" scope:\"read-only\"`\n\t} `json:\"credentials\" validate:\"gt=1\" scope:\"read-only\"`\n}\n```\n\nTo add `options` to for a given key, we use the `-add-options` flag. In the\nexample below we're going to add the `json` key and the `omitempty` option to\nall json keys:\n\n```\n$ gomodifytags -file demo.go -struct Server -add-tags json -add-options json=omitempty\n```\n```go\npackage main\n\ntype Server struct {\n\tName        string `json:\"name,omitempty\"`\n\tPort        int    `json:\"port,omitempty\"`\n\tEnableLogs  bool   `json:\"enable_logs,omitempty\"`\n\tBaseDomain  string `json:\"base_domain,omitempty\"`\n\tCredentials struct {\n\t\tUsername string `json:\"username,omitempty\"`\n\t\tPassword string `json:\"password,omitempty\"`\n\t} `json:\"credentials,omitempty\"`\n}\n```\n\nIf the key already exists you don't have to use `-add-tags`\n\n\n### Skipping unexported fields\n\nBy default all fields are processed. This main reason for this is to allow\nstructs to evolve with time and be ready in case a field is exported in the\nfuture. However if you don't like this behavior, you can skip it by passing the\n`--skip-unexported` flag:\n\n```\n$ gomodifytags -file demo.go -struct Server -add-tags json --skip-unexported\n```\n```go\npackage main\n\ntype Server struct {\n        Name       string `json:\"name\"`\n        Port       int    `json:\"port\"`\n        enableLogs bool\n        baseDomain string\n}\n```\n\n## Removing tags \u0026 options\n\nLet's continue with removing tags. We're going to use the following simple package:\n\n```go\npackage main\n\ntype Server struct {\n\tName        string `json:\"name,omitempty\" xml:\"name,attr,cdata\"`\n\tPort        int    `json:\"port,omitempty\" xml:\"port,attr,cdata\"`\n\tEnableLogs  bool   `json:\"enable_logs,omitempty\" xml:\"enable_logs,attr,cdata\"`\n\tBaseDomain  string `json:\"base_domain,omitempty\" xml:\"base_domain,attr,cdata\"`\n\tCredentials struct {\n\t\tUsername string `json:\"username,omitempty\" xml:\"username,attr,cdata\"`\n\t\tPassword string `json:\"password,omitempty\" xml:\"password,attr,cdata\"`\n\t} `json:\"credentials,omitempty\" xml:\"credentials,attr,cdata\"`\n}\n```\n\nTo remove the xml tags, we're going to use the `-remove-tags` flag:\n\n```\n$ gomodifytags -file demo.go -struct Server -remove-tags xml\n```\n```go\npackage main\n\ntype Server struct {\n\tName        string `json:\"name\"`\n\tPort        int    `json:\"port\"`\n\tEnableLogs  bool   `json:\"enable_logs\"`\n\tBaseDomain  string `json:\"base_domain\"`\n\tCredentials struct {\n\t\tUsername string `json:\"username\"`\n\t\tPassword string `json:\"password\"`\n\t} `json:\"credentials\"`\n}\n```\n\nYou can also remove multiple tags. The example below removes `json` and `xml`:\n\n```\n$ gomodifytags -file demo.go -struct Server -remove-tags json,xml\n```\n```go\npackage main\n\ntype Server struct {\n\tName        string\n\tPort        int\n\tEnableLogs  bool\n\tBaseDomain  string\n\tCredentials struct {\n\t\tUsername string\n\t\tPassword string\n\t}\n}\n```\n\nIf you want to remove all keys, we can also use the `-clear-tags` flag. This\nflag removes all tags and doesn't require to explicitly pass the key names:\n\n```\n$ gomodifytags -file demo.go -struct Server -clear-tags\n```\n```go\npackage main\n\ntype Server struct {\n\tName        string\n\tPort        int\n\tEnableLogs  bool\n\tBaseDomain  string\n\tCredentials struct {\n\t\tUsername string\n\t\tPassword string\n\t}\n}\n```\n\nTo remove any option, we can use the `-remove-options` flag. The following will\nremove all `omitempty` flags from the `json` key:\n\n```\n$ gomodifytags -file demo.go -struct Server -remove-options json=omitempty\n```\n```go\npackage main\n\ntype Server struct {\n\tName        string `json:\"name\" xml:\"name,attr,cdata\"`\n\tPort        int    `json:\"port\" xml:\"port,attr,cdata\"`\n\tEnableLogs  bool   `json:\"enable_logs\" xml:\"enable_logs,attr,cdata\"`\n\tBaseDomain  string `json:\"base_domain\" xml:\"base_domain,attr,cdata\"`\n\tCredentials struct {\n\t\tUsername string `json:\"username\" xml:\"username,attr,cdata\"`\n\t\tPassword string `json:\"password\" xml:\"password,attr,cdata\"`\n\t} `json:\"credentials\" xml:\"credentials,attr,cdata\"`\n}\n```\n\nTo remove multiple options from multiple tags just add another options:\n\n```\n$ gomodifytags -file demo.go -struct Server -remove-options json=omitempty,xml=cdata\n```\n```go\npackage main\n\ntype Server struct {\n\tName        string `json:\"name\" xml:\"name,attr\"`\n\tPort        int    `json:\"port\" xml:\"port,attr\"`\n\tEnableLogs  bool   `json:\"enable_logs\" xml:\"enable_logs,attr\"`\n\tBaseDomain  string `json:\"base_domain\" xml:\"base_domain,attr\"`\n\tCredentials struct {\n\t\tUsername string `json:\"username\" xml:\"username,attr\"`\n\t\tPassword string `json:\"password\" xml:\"password,attr\"`\n\t} `json:\"credentials\" xml:\"credentials,attr\"`\n}\n```\n\nTo remove multiple options from the same tag, you can repeat the tag name. For example:\n\n```\n$ gomodifytags -file demo.go -struct Server -remove-options json=first_option,json=other_option\n```\n\nLastly, to remove all options without explicitly defining the keys and names,\nwe can use the `-clear-options` flag. The following example will remove all\noptions for the given struct:\n\n```\n$ gomodifytags -file demo.go -struct Server -clear-options\n```\n```go\npackage main\n\ntype Server struct {\n\tName        string `json:\"name\" xml:\"name\"`\n\tPort        int    `json:\"port\" xml:\"port\"`\n\tEnableLogs  bool   `json:\"enable_logs\" xml:\"enable_logs\"`\n\tBaseDomain  string `json:\"base_domain\" xml:\"base_domain\"`\n\tCredentials struct {\n\t\tUsername string `json:\"username\" xml:\"username\"`\n\t\tPassword string `json:\"password\" xml:\"password\"`\n\t} `json:\"credentials\" xml:\"credentials\"`\n}\n```\n\n## Line based modification\n\nSo far all examples used the `-struct` flag. However we also can pass the line\nnumbers to only change certain files. Suppose we only want to remove the tags\nfor the `Credentials` struct (including the fields) for the following code (lines are included):\n\n```go\n01  package main\n02  \n03  type Server struct {\n04  \tName        string `json:\"name\" xml:\"name\"`\n05  \tPort        int    `json:\"port\" xml:\"port\"`\n06  \tEnableLogs  bool   `json:\"enable_logs\" xml:\"enable_logs\"`\n07  \tBaseDomain  string `json:\"base_domain\" xml:\"base_domain\"`\n08  \tCredentials struct {\n09  \t\tUsername string `json:\"username\" xml:\"username\"`\n10  \t\tPassword string `json:\"password\" xml:\"password\"`\n11  \t} `json:\"credentials\" xml:\"credentials\"`\n12  }\n```\n\nTo remove the tags for the credentials we're going to pass the `-line` flag:\n\n```\n$ gomodifytags -file demo.go -line 8,11 -clear-tags xml\n```\n```go\npackage main\n\ntype Server struct {\n\tName        string `json:\"name\" xml:\"name\"`\n\tPort        int    `json:\"port\" xml:\"port\"`\n\tEnableLogs  bool   `json:\"enable_logs\" xml:\"enable_logs\"`\n\tBaseDomain  string `json:\"base_domain\" xml:\"base_domain\"`\n\tCredentials struct {\n\t\tUsername string\n\t\tPassword string\n\t}\n}\n```\n\nFor removing the xml tags for certain lines, we can use the `-remove-tags`\nfield. The following example will remove the `xml` tags for the lines 6 and 7\n(fields with names of `EnableLogs` and `BaseDomain`):\n\n```\n$ gomodifytags -file demo.go -line 6,7 -remove-tags xml\n```\n```go\npackage main\n\ntype Server struct {\n\tName        string `json:\"name\" xml:\"name\"`\n\tPort        int    `json:\"port\" xml:\"port\"`\n\tEnableLogs  bool   `json:\"enable_logs\"`\n\tBaseDomain  string `json:\"base_domain\"`\n\tCredentials struct {\n\t\tUsername string `json:\"username\" xml:\"username\"`\n\t\tPassword string `json:\"password\" xml:\"password\"`\n\t} `json:\"credentials\" xml:\"credentials\"`\n}\n```\n\nThe same logic applies to adding tags or any other option as well. To add the\n`bson` tag to the lines between 5 and 7, we can use the following example:\n\n```\n$ gomodifytags -file demo.go -line 5,7 -add-tags bson\n```\n```go\npackage main\n\ntype Server struct {\n\tName        string `json:\"name\" xml:\"name\"`\n\tPort        int    `json:\"port\" xml:\"port\" bson:\"port\"`\n\tEnableLogs  bool   `json:\"enable_logs\" xml:\"enable_logs\" bson:\"enable_logs\"`\n\tBaseDomain  string `json:\"base_domain\" xml:\"base_domain\" bson:\"base_domain\"`\n\tCredentials struct {\n\t\tUsername string `json:\"username\" xml:\"username\"`\n\t\tPassword string `json:\"password\" xml:\"password\"`\n\t} `json:\"credentials\" xml:\"credentials\"`\n}\n```\n\n## Apply()\n\nIn addition to the command line execution, gomodifytags is also available\nas a library `modifytags`, with a single method `Apply`. \n\nThis method applies the struct tag modification of the receiver to all struct\nfields contained within a given node between given start and end positions.\n\n## Editor integration\n\nEditors can use the tool by calling the tool and then either replace the buffer\nwith the stdout or use the `-w` flag.\n\nAlso `-line` and `-offset` flags should be preferred to be used with editors.\nAn editor can select a range of lines and then pass it to `-line` flag. The\neditor also can pass the offset under the cursor if it's inside the struct to\n`-offset`\n\nEditors also can use the `-format` flag to output a json output with the\nchanged lines. This is useful if you want to explicitly replace the buffer with\nthe given lines. For the file below:\n\n\n```go\npackage main\n\ntype Server struct {\n\tName        string\n\tPort        int\n\tEnableLogs  bool\n\tBaseDomain  string\n\tCredentials struct {\n\t\tUsername string\n\t\tPassword string\n\t}\n}\n```\n\nIf we add the `xml` tag and tell to output the format in json  with the\n`-format` flag, the following will be printed:\n\n```\n$ gomodifytags -file demo.go -struct Server -add-tags xml -format json\n```\n```json\n{\n  \"start\": 3,\n  \"end\": 12,\n  \"lines\": [\n    \"type Server struct {\",\n    \"\\tName        string `xml:\\\"name\\\"`\",\n    \"\\tPort        int    `xml:\\\"port\\\"`\",\n    \"\\tEnableLogs  bool   `xml:\\\"enable_logs\\\"`\",\n    \"\\tBaseDomain  string `xml:\\\"base_domain\\\"`\",\n    \"\\tCredentials struct {\",\n    \"\\t\\tUsername string `xml:\\\"username\\\"`\",\n    \"\\t\\tPassword string `xml:\\\"password\\\"`\",\n    \"\\t} `xml:\\\"credentials\\\"`\",\n    \"}\"\n  ]\n}\n```\n\nThe output is defined with the following Go struct:\n\n```go\ntype output struct {\n\tStart int      `json:\"start\"`\n\tEnd   int      `json:\"end\"`\n\tLines []string `json:\"lines\"`\n}\n```\n\nThe `start` and `end` specifies the positions in the file the `lines` will\napply.  With this information, you can replace the editor buffer by iterating\nover the `lines` and set it for the given range. An example how it's done in\nvim-go in Vimscript is:\n\n```viml\nlet index = 0\nfor line_number in range(start, end)\n  call setline(line_number, lines[index])\n  let index += 1\nendfor\n```\n\n### Unsaved files\n\nEditors can supply `gomodifytags` with the contents of unsaved buffers by using\nthe `-modified` flag and writing an archive to stdin.  Files in the archive\nwill be preferred over those on disk.\n\nEach archive entry consists of:\n - the file name, followed by a newline\n - the (decimal) file size, followed by a newline\n - the contents of the file\n\n# Development\n\nAt least Go `v1.11.x` is required. Older versions might work, but it's not\nrecommended. First, checkout the repository:\n\n```\ngit clone https://github.com/fatih/gomodifytags.git\n```\n\nStart developing the code. To build a binary, execute:\n\n```\ngo build\n```\n\nThis will create a `gomodifytags` binary in the current directory. To test the\npackage, run the following:\n\n```\ngo test -v\n```\n\nIf everything works fine, feel free to open a pull request with your changes.\n","funding_links":[],"categories":["开发工具","Go","Misc","Libraries","Repositories"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffatih%2Fgomodifytags","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffatih%2Fgomodifytags","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffatih%2Fgomodifytags/lists"}