[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-4816":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":19,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":29,"readmeContent":30,"aiSummary":31,"trendingCount":16,"starSnapshotCount":16,"syncStatus":32,"lastSyncTime":33,"discoverSource":34},4816,"validator","go-playground\u002Fvalidator","go-playground",":100:Go Struct and Field validation, including Cross Field, Cross Struct, Map, Slice and Array diving","",null,"Go",19999,1428,120,241,0,8,73,5,44.47,"MIT License",false,"master",true,[26,27,28],"error-handling","translation","validation","2026-06-12 02:01:04","Package validator\n=================\n\u003Cimg align=\"right\" src=\"logo.png\">[![GitHub release (latest SemVer)](https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fv\u002Frelease\u002Fgo-playground\u002Fvalidator)](https:\u002F\u002Fgithub.com\u002Fgo-playground\u002Fvalidator\u002Freleases)\n[![Build Status](https:\u002F\u002Fgithub.com\u002Fgo-playground\u002Fvalidator\u002Factions\u002Fworkflows\u002Fworkflow.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Fgo-playground\u002Fvalidator\u002Factions)\n[![Coverage Status](https:\u002F\u002Fcoveralls.io\u002Frepos\u002Fgo-playground\u002Fvalidator\u002Fbadge.svg?branch=master&service=github)](https:\u002F\u002Fcoveralls.io\u002Fgithub\u002Fgo-playground\u002Fvalidator?branch=master)\n[![Go Report Card](https:\u002F\u002Fgoreportcard.com\u002Fbadge\u002Fgithub.com\u002Fgo-playground\u002Fvalidator)](https:\u002F\u002Fgoreportcard.com\u002Freport\u002Fgithub.com\u002Fgo-playground\u002Fvalidator)\n[![GoDoc](https:\u002F\u002Fgodoc.org\u002Fgithub.com\u002Fgo-playground\u002Fvalidator?status.svg)](https:\u002F\u002Fpkg.go.dev\u002Fgithub.com\u002Fgo-playground\u002Fvalidator\u002Fv10)\n![License](https:\u002F\u002Fimg.shields.io\u002Fdub\u002Fl\u002Fvibe-d.svg)\n\nPackage validator implements value validations for structs and individual fields based on tags.\n\nIt has the following **unique** features:\n\n-   Cross Field and Cross Struct validations by using validation tags or custom validators.\n-   Slice, Array and Map diving, which allows any or all levels of a multidimensional field to be validated.\n-   Ability to dive into both map keys and values for validation\n-   Handles type interface by determining it's underlying type prior to validation.\n-   Handles custom field types such as sql driver [Valuer](https:\u002F\u002Fgolang.org\u002Fsrc\u002Fdatabase\u002Fsql\u002Fdriver\u002Ftypes.go?s=1210:1293#L29) and the [Valuer interface](https:\u002F\u002Fgithub.com\u002Fgo-playground\u002Fvalidator\u002Fblob\u002Fmaster\u002F_examples\u002Fvaluer\u002Fmain.go)\n-   Alias validation tags, which allows for mapping of several validations to a single tag for easier defining of validations on structs\n-   Extraction of custom defined Field Name e.g. can specify to extract the JSON name while validating and have it available in the resulting FieldError\n-   Customizable i18n aware error messages.\n-   Default validator for the [gin](https:\u002F\u002Fgithub.com\u002Fgin-gonic\u002Fgin) web framework; upgrading from v8 to v9 in gin see [here](https:\u002F\u002Fgithub.com\u002Fgo-playground\u002Fvalidator\u002Ftree\u002Fmaster\u002F_examples\u002Fgin-upgrading-overriding)\n\nA Call for Maintainers\n----------------------\n\nPlease read the discussion started [here](https:\u002F\u002Fgithub.com\u002Fgo-playground\u002Fvalidator\u002Fdiscussions\u002F1330) if you are interested in contributing\u002Fhelping maintain this package.\n\nInstallation\n------------\n\nUse go get.\n\n\tgo get github.com\u002Fgo-playground\u002Fvalidator\u002Fv10\n\nThen import the validator package into your own code.\n\n\timport \"github.com\u002Fgo-playground\u002Fvalidator\u002Fv10\"\n\nError Return Value\n-------\n\nValidation functions return type error\n\nThey return type error to avoid the issue discussed in the following, where err is always != nil:\n\n* http:\u002F\u002Fstackoverflow.com\u002Fa\u002F29138676\u002F3158232\n* https:\u002F\u002Fgithub.com\u002Fgo-playground\u002Fvalidator\u002Fissues\u002F134\n\nValidator returns only InvalidValidationError for bad validation input, nil or ValidationErrors as type error; so, in your code all you need to do is check if the error returned is not nil, and if it's not check if error is InvalidValidationError ( if necessary, most of the time it isn't ) type cast it to type ValidationErrors like so:\n\n```go\nerr := validate.Struct(mystruct)\nvar validationErrors validator.ValidationErrors\nerrors.As(err, &validationErrors)\n ```\n\nUsage and documentation\n------\n\nPlease see https:\u002F\u002Fpkg.go.dev\u002Fgithub.com\u002Fgo-playground\u002Fvalidator\u002Fv10 for detailed usage docs.\n\n##### Examples:\n\n- [Simple](https:\u002F\u002Fgithub.com\u002Fgo-playground\u002Fvalidator\u002Fblob\u002Fmaster\u002F_examples\u002Fsimple\u002Fmain.go)\n- [Custom Field Types](https:\u002F\u002Fgithub.com\u002Fgo-playground\u002Fvalidator\u002Fblob\u002Fmaster\u002F_examples\u002Fcustom\u002Fmain.go)\n- [Struct Level](https:\u002F\u002Fgithub.com\u002Fgo-playground\u002Fvalidator\u002Fblob\u002Fmaster\u002F_examples\u002Fstruct-level\u002Fmain.go)\n- [Translations & Custom Errors](https:\u002F\u002Fgithub.com\u002Fgo-playground\u002Fvalidator\u002Fblob\u002Fmaster\u002F_examples\u002Ftranslations\u002Fmain.go)\n- [Gin upgrade and\u002For override validator](https:\u002F\u002Fgithub.com\u002Fgo-playground\u002Fvalidator\u002Ftree\u002Fv9\u002F_examples\u002Fgin-upgrading-overriding)\n- [wash - an example application putting it all together](https:\u002F\u002Fgithub.com\u002Fbluesuncorp\u002Fwash)\n\nBaked-in Validations\n------\n\n### Special Notes:\n- If new to using validator it is highly recommended to initialize it using the `WithRequiredStructEnabled` option which is opt-in to new behaviour that will become the default behaviour in v11+. See documentation for more details.\n```go\nvalidate := validator.New(validator.WithRequiredStructEnabled())\n```\n\n### Fields:\n\n| Tag | Description |\n| - | - |\n| eqcsfield | Field Equals Another Field (relative)|\n| eqfield | Field Equals Another Field |\n| fieldcontains | Check the indicated characters are present in the Field |\n| fieldexcludes | Check the indicated characters are not present in the field |\n| gtcsfield | Field Greater Than Another Relative Field |\n| gtecsfield | Field Greater Than or Equal To Another Relative Field |\n| gtefield | Field Greater Than or Equal To Another Field |\n| gtfield | Field Greater Than Another Field |\n| ltcsfield | Less Than Another Relative Field |\n| ltecsfield | Less Than or Equal To Another Relative Field |\n| ltefield | Less Than or Equal To Another Field |\n| ltfield | Less Than Another Field |\n| necsfield | Field Does Not Equal Another Field (relative) |\n| nefield | Field Does Not Equal Another Field |\n\n### Network:\n\n| Tag | Description |\n| - | - |\n| cidr | Classless Inter-Domain Routing CIDR |\n| cidrv4 | Classless Inter-Domain Routing CIDRv4 |\n| cidrv6 | Classless Inter-Domain Routing CIDRv6 |\n| datauri | Data URL |\n| fqdn | Full Qualified Domain Name (FQDN) |\n| hostname | Hostname RFC 952 |\n| hostname_rfc1123 | Hostname RFC 1123 |\n| hostname_port | HostPort |\n| port | Port number |\n| ip | Internet Protocol Address IP |\n| ip4_addr | Internet Protocol Address IPv4 |\n| ip6_addr | Internet Protocol Address IPv6 |\n| ip_addr | Internet Protocol Address IP |\n| ipv4 | Internet Protocol Address IPv4 |\n| ipv6 | Internet Protocol Address IPv6 |\n| mac | Media Access Control Address MAC |\n| tcp4_addr | Transmission Control Protocol Address TCPv4 |\n| tcp6_addr | Transmission Control Protocol Address TCPv6 |\n| tcp_addr | Transmission Control Protocol Address TCP |\n| udp4_addr | User Datagram Protocol Address UDPv4 |\n| udp6_addr | User Datagram Protocol Address UDPv6 |\n| udp_addr | User Datagram Protocol Address UDP |\n| unix_addr | Unix domain socket end point Address |\n| uds_exists | Unix domain socket exists (checks filesystem sockets and Linux abstract sockets) |\n| uri | URI String |\n| url | URL String |\n| http_url | HTTP(s) URL String |\n| https_url | HTTPS-only URL String |\n| origin | Web origin (URL with HTTP(S) scheme and host, but no path\u002Fquery\u002Ffragment) |\n| url_encoded | URL Encoded |\n| urn_rfc2141 | Urn RFC 2141 String |\n\n### Strings:\n\n| Tag | Description |\n| - | - |\n| alpha | Alpha Only |\n| alphaspace | Alpha Space |\n| alphanum | Alphanumeric |\n| alphanumspace | Alphanumeric Space |\n| alphanumunicode | Alphanumeric Unicode |\n| alphaunicode | Alpha Unicode |\n| ascii | ASCII |\n| boolean | Boolean |\n| contains | Contains |\n| containsany | Contains Any |\n| containsrune | Contains Rune |\n| endsnotwith | Ends Not With |\n| endswith | Ends With |\n| excludes | Excludes |\n| excludesall | Excludes All |\n| excludesrune | Excludes Rune |\n| lowercase | Lowercase |\n| multibyte | Multi-Byte Characters |\n| number | Number |\n| numeric | Numeric |\n| printascii | Printable ASCII |\n| startsnotwith | Starts Not With |\n| startswith | Starts With |\n| uppercase | Uppercase |\n\n### Format:\n| Tag | Description |\n| - | - |\n| base64 | Base64 String |\n| base64url | Base64URL String |\n| base64rawurl | Base64RawURL String |\n| bic_iso_9362_2014 | Business Identifier Code (ISO 9362:2014) |\n| bic | Business Identifier Code (ISO 9362:2022) |\n| bcp47_language_tag | Language tag (BCP 47) |\n| bcp47_strict_language_tag | Language tag (BCP 47), strictly following RFC 5646 |\n| btc_addr | Bitcoin Address |\n| btc_addr_bech32 | Bitcoin Bech32 Address (segwit) |\n| credit_card | Credit Card Number |\n| mongodb | MongoDB ObjectID |\n| mongodb_connection_string | MongoDB Connection String |\n| cron | Cron |\n| spicedb | SpiceDb ObjectID\u002FPermission\u002FType |\n| datetime | Datetime |\n| e164 | e164 formatted phone number |\n| ein | U.S. Employer Identification Number |\n| email | E-mail String\n| eth_addr | Ethereum Address |\n| hexadecimal | Hexadecimal String |\n| hexcolor | Hexcolor String |\n| hsl | HSL String |\n| hsla | HSLA String |\n| cmyk | CMYK String |\n| html | HTML Tags |\n| html_encoded | HTML Encoded |\n| isbn | International Standard Book Number |\n| isbn10 | International Standard Book Number 10 |\n| isbn13 | International Standard Book Number 13 |\n| issn | International Standard Serial Number |\n| iso3166_1_alpha2 | Two-letter country code (ISO 3166-1 alpha-2) |\n| iso3166_1_alpha3 | Three-letter country code (ISO 3166-1 alpha-3) |\n| iso3166_1_alpha_numeric | Numeric country code (ISO 3166-1 numeric) |\n| iso3166_2 | Country subdivision code (ISO 3166-2) |\n| iso4217 | Currency code (ISO 4217) |\n| json | JSON |\n| jwt | JSON Web Token (JWT) |\n| latitude | Latitude |\n| longitude | Longitude |\n| luhn_checksum | Luhn Algorithm Checksum (for strings and (u)int) |\n| postcode_iso3166_alpha2 | Postcode |\n| postcode_iso3166_alpha2_field | Postcode |\n| rgb | RGB String |\n| rgba | RGBA String |\n| ssn | Social Security Number SSN |\n| timezone | Timezone |\n| uuid | Universally Unique Identifier UUID |\n| uuid3 | Universally Unique Identifier UUID v3 |\n| uuid3_rfc4122 | Universally Unique Identifier UUID v3 RFC4122 |\n| uuid4 | Universally Unique Identifier UUID v4 |\n| uuid4_rfc4122 | Universally Unique Identifier UUID v4 RFC4122 |\n| uuid5 | Universally Unique Identifier UUID v5 |\n| uuid5_rfc4122 | Universally Unique Identifier UUID v5 RFC4122 |\n| uuid_rfc4122 | Universally Unique Identifier UUID RFC4122 |\n| md4 | MD4 hash |\n| md5 | MD5 hash |\n| sha256 | SHA256 hash |\n| sha384 | SHA384 hash |\n| sha512 | SHA512 hash |\n| ripemd128 | RIPEMD-128 hash |\n| ripemd128 | RIPEMD-160 hash |\n| tiger128 | TIGER128 hash |\n| tiger160 | TIGER160 hash |\n| tiger192 | TIGER192 hash |\n| semver | Semantic Versioning 2.0.0 |\n| ulid | Universally Unique Lexicographically Sortable Identifier ULID |\n| cve | Common Vulnerabilities and Exposures Identifier (CVE id) |\n\n### Comparisons:\n| Tag | Description |\n| - | - |\n| eq | Equals |\n| eq_ignore_case | Equals ignoring case |\n| gt | Greater than|\n| gte | Greater than or equal |\n| lt | Less Than |\n| lte | Less Than or Equal |\n| ne | Not Equal |\n| ne_ignore_case | Not Equal ignoring case |\n\n### Other:\n| Tag | Description |\n| - | - |\n| dir | Existing Directory |\n| dirpath | Directory Path |\n| file | Existing File |\n| filepath | File Path |\n| image | Image |\n| mimetype | MIME Type |\n| isdefault | Is Default |\n| len | Length |\n| max | Maximum |\n| min | Minimum |\n| oneof | One Of |\n| noneof | None Of |\n| required | Required |\n| required_if | Required If |\n| required_unless | Required Unless |\n| required_with | Required With |\n| required_with_all | Required With All |\n| required_without | Required Without |\n| required_without_all | Required Without All |\n| excluded_if | Excluded If |\n| excluded_unless | Excluded Unless |\n| excluded_with | Excluded With |\n| excluded_with_all | Excluded With All |\n| excluded_without | Excluded Without |\n| excluded_without_all | Excluded Without All |\n| unique | Unique |\n| validateFn | Verify if the method `Validate() error` does not return an error (or any specified method) |\n\n\n#### Aliases:\n| Tag | Description |\n| - | - |\n| iscolor | hexcolor\\|rgb\\|rgba\\|hsl\\|hsla\\|cmyk |\n| country_code | iso3166_1_alpha2\\|iso3166_1_alpha3\\|iso3166_1_alpha_numeric |\n\nBenchmarks\n------\n###### Run on MacBook Pro Max M3\n```go\ngo version go1.23.3 darwin\u002Farm64\ngoos: darwin\ngoarch: arm64\ncpu: Apple M3 Max\npkg: github.com\u002Fgo-playground\u002Fvalidator\u002Fv10\nBenchmarkFieldSuccess-16                                                42461943                27.88 ns\u002Fop            0 B\u002Fop          0 allocs\u002Fop\nBenchmarkFieldSuccessParallel-16                                        486632887                2.289 ns\u002Fop           0 B\u002Fop          0 allocs\u002Fop\nBenchmarkFieldFailure-16                                                 9566167               121.3 ns\u002Fop           200 B\u002Fop          4 allocs\u002Fop\nBenchmarkFieldFailureParallel-16                                        17551471                83.68 ns\u002Fop          200 B\u002Fop          4 allocs\u002Fop\nBenchmarkFieldArrayDiveSuccess-16                                        7602306               155.6 ns\u002Fop            97 B\u002Fop          5 allocs\u002Fop\nBenchmarkFieldArrayDiveSuccessParallel-16                               20664610                59.80 ns\u002Fop           97 B\u002Fop          5 allocs\u002Fop\nBenchmarkFieldArrayDiveFailure-16                                        4659756               252.9 ns\u002Fop           301 B\u002Fop         10 allocs\u002Fop\nBenchmarkFieldArrayDiveFailureParallel-16                                8010116               152.9 ns\u002Fop           301 B\u002Fop         10 allocs\u002Fop\nBenchmarkFieldMapDiveSuccess-16                                          2834575               421.2 ns\u002Fop           288 B\u002Fop         14 allocs\u002Fop\nBenchmarkFieldMapDiveSuccessParallel-16                                  7179700               171.8 ns\u002Fop           288 B\u002Fop         14 allocs\u002Fop\nBenchmarkFieldMapDiveFailure-16                                          3081728               384.4 ns\u002Fop           376 B\u002Fop         13 allocs\u002Fop\nBenchmarkFieldMapDiveFailureParallel-16                                  6058137               204.0 ns\u002Fop           377 B\u002Fop         13 allocs\u002Fop\nBenchmarkFieldMapDiveWithKeysSuccess-16                                  2544975               464.8 ns\u002Fop           288 B\u002Fop         14 allocs\u002Fop\nBenchmarkFieldMapDiveWithKeysSuccessParallel-16                          6661954               181.4 ns\u002Fop           288 B\u002Fop         14 allocs\u002Fop\nBenchmarkFieldMapDiveWithKeysFailure-16                                  2435484               490.7 ns\u002Fop           553 B\u002Fop         16 allocs\u002Fop\nBenchmarkFieldMapDiveWithKeysFailureParallel-16                          4249617               282.0 ns\u002Fop           554 B\u002Fop         16 allocs\u002Fop\nBenchmarkFieldCustomTypeSuccess-16                                      14943525                77.35 ns\u002Fop           32 B\u002Fop          2 allocs\u002Fop\nBenchmarkFieldCustomTypeSuccessParallel-16                              64051954                20.61 ns\u002Fop           32 B\u002Fop          2 allocs\u002Fop\nBenchmarkFieldCustomTypeFailure-16                                      10721384               107.1 ns\u002Fop           184 B\u002Fop          3 allocs\u002Fop\nBenchmarkFieldCustomTypeFailureParallel-16                              18714495                69.77 ns\u002Fop          184 B\u002Fop          3 allocs\u002Fop\nBenchmarkFieldOrTagSuccess-16                                            4063124               294.3 ns\u002Fop            16 B\u002Fop          1 allocs\u002Fop\nBenchmarkFieldOrTagSuccessParallel-16                                   31903756                41.22 ns\u002Fop           18 B\u002Fop          1 allocs\u002Fop\nBenchmarkFieldOrTagFailure-16                                            7748558               146.8 ns\u002Fop           216 B\u002Fop          5 allocs\u002Fop\nBenchmarkFieldOrTagFailureParallel-16                                   13139854                92.05 ns\u002Fop          216 B\u002Fop          5 allocs\u002Fop\nBenchmarkStructLevelValidationSuccess-16                                16808389                70.25 ns\u002Fop           16 B\u002Fop          1 allocs\u002Fop\nBenchmarkStructLevelValidationSuccessParallel-16                        90686955                14.47 ns\u002Fop           16 B\u002Fop          1 allocs\u002Fop\nBenchmarkStructLevelValidationFailure-16                                 5818791               200.2 ns\u002Fop           264 B\u002Fop          7 allocs\u002Fop\nBenchmarkStructLevelValidationFailureParallel-16                        11115874               107.5 ns\u002Fop           264 B\u002Fop          7 allocs\u002Fop\nBenchmarkStructSimpleCustomTypeSuccess-16                                7764956               151.9 ns\u002Fop            32 B\u002Fop          2 allocs\u002Fop\nBenchmarkStructSimpleCustomTypeSuccessParallel-16                       52316265                30.37 ns\u002Fop           32 B\u002Fop          2 allocs\u002Fop\nBenchmarkStructSimpleCustomTypeFailure-16                                4195429               277.2 ns\u002Fop           416 B\u002Fop          9 allocs\u002Fop\nBenchmarkStructSimpleCustomTypeFailureParallel-16                        7305661               164.6 ns\u002Fop           432 B\u002Fop         10 allocs\u002Fop\nBenchmarkStructFilteredSuccess-16                                        6312625               186.1 ns\u002Fop           216 B\u002Fop          5 allocs\u002Fop\nBenchmarkStructFilteredSuccessParallel-16                               13684459                93.42 ns\u002Fop          216 B\u002Fop          5 allocs\u002Fop\nBenchmarkStructFilteredFailure-16                                        6751482               171.2 ns\u002Fop           216 B\u002Fop          5 allocs\u002Fop\nBenchmarkStructFilteredFailureParallel-16                               14146070                86.93 ns\u002Fop          216 B\u002Fop          5 allocs\u002Fop\nBenchmarkStructPartialSuccess-16                                         6544448               177.3 ns\u002Fop           224 B\u002Fop          4 allocs\u002Fop\nBenchmarkStructPartialSuccessParallel-16                                13951946                88.73 ns\u002Fop          224 B\u002Fop          4 allocs\u002Fop\nBenchmarkStructPartialFailure-16                                         4075833               287.5 ns\u002Fop           440 B\u002Fop          9 allocs\u002Fop\nBenchmarkStructPartialFailureParallel-16                                 7490805               161.3 ns\u002Fop           440 B\u002Fop          9 allocs\u002Fop\nBenchmarkStructExceptSuccess-16                                          4107187               281.4 ns\u002Fop           424 B\u002Fop          8 allocs\u002Fop\nBenchmarkStructExceptSuccessParallel-16                                 15979173                80.86 ns\u002Fop          208 B\u002Fop          3 allocs\u002Fop\nBenchmarkStructExceptFailure-16                                          4434372               264.3 ns\u002Fop           424 B\u002Fop          8 allocs\u002Fop\nBenchmarkStructExceptFailureParallel-16                                  8081367               154.1 ns\u002Fop           424 B\u002Fop          8 allocs\u002Fop\nBenchmarkStructSimpleCrossFieldSuccess-16                                6459542               183.4 ns\u002Fop            56 B\u002Fop          3 allocs\u002Fop\nBenchmarkStructSimpleCrossFieldSuccessParallel-16                       41013781                37.95 ns\u002Fop           56 B\u002Fop          3 allocs\u002Fop\nBenchmarkStructSimpleCrossFieldFailure-16                                4034998               292.1 ns\u002Fop           272 B\u002Fop          8 allocs\u002Fop\nBenchmarkStructSimpleCrossFieldFailureParallel-16                       11348446               115.3 ns\u002Fop           272 B\u002Fop          8 allocs\u002Fop\nBenchmarkStructSimpleCrossStructCrossFieldSuccess-16                     4448528               267.7 ns\u002Fop            64 B\u002Fop          4 allocs\u002Fop\nBenchmarkStructSimpleCrossStructCrossFieldSuccessParallel-16            26813619                48.33 ns\u002Fop           64 B\u002Fop          4 allocs\u002Fop\nBenchmarkStructSimpleCrossStructCrossFieldFailure-16                     3090646               384.5 ns\u002Fop           288 B\u002Fop          9 allocs\u002Fop\nBenchmarkStructSimpleCrossStructCrossFieldFailureParallel-16             9870906               129.5 ns\u002Fop           288 B\u002Fop          9 allocs\u002Fop\nBenchmarkStructSimpleSuccess-16                                         10675562               109.5 ns\u002Fop             0 B\u002Fop          0 allocs\u002Fop\nBenchmarkStructSimpleSuccessParallel-16                                 131159784                8.932 ns\u002Fop           0 B\u002Fop          0 allocs\u002Fop\nBenchmarkStructSimpleFailure-16                                          4094979               286.6 ns\u002Fop           416 B\u002Fop          9 allocs\u002Fop\nBenchmarkStructSimpleFailureParallel-16                                  7606663               157.9 ns\u002Fop           416 B\u002Fop          9 allocs\u002Fop\nBenchmarkStructComplexSuccess-16                                         2073470               576.0 ns\u002Fop           224 B\u002Fop          5 allocs\u002Fop\nBenchmarkStructComplexSuccessParallel-16                                 7821831               161.3 ns\u002Fop           224 B\u002Fop          5 allocs\u002Fop\nBenchmarkStructComplexFailure-16                                          576358              2001 ns\u002Fop            3042 B\u002Fop         48 allocs\u002Fop\nBenchmarkStructComplexFailureParallel-16                                 1000000              1171 ns\u002Fop            3041 B\u002Fop         48 allocs\u002Fop\nBenchmarkOneof-16                                                       22503973                52.82 ns\u002Fop            0 B\u002Fop          0 allocs\u002Fop\nBenchmarkOneofParallel-16                                                8538474               140.4 ns\u002Fop             0 B\u002Fop          0 allocs\u002Fop\n```\n\nComplementary Software\n----------------------\n\nHere is a list of software that complements using this library either pre or post validation.\n\n* [form](https:\u002F\u002Fgithub.com\u002Fgo-playground\u002Fform) - Decodes url.Values into Go value(s) and Encodes Go value(s) into url.Values. Dual Array and Full map support.\n* [mold](https:\u002F\u002Fgithub.com\u002Fgo-playground\u002Fmold) - A general library to help modify or set data within data structures and other objects\n\nHow to Contribute\n------\n\nMake a pull request...\n\nMaintenance and support for SDK major versions\n----------------------------------------------\n\nSee prior discussion [here](https:\u002F\u002Fgithub.com\u002Fgo-playground\u002Fvalidator\u002Fdiscussions\u002F1342) for more details.\n\nThis package is aligned with the [Go release policy](https:\u002F\u002Fgo.dev\u002Fdoc\u002Fdevel\u002Frelease) in that support is guaranteed for \nthe two most recent major versions.\n\nThis does not mean the package will not work with older versions of Go, only that we reserve the right to increase the \nMSGV(Minimum Supported Go Version) when the need arises to address Security issues\u002Fpatches, OS issues & support or newly \nintroduced functionality that would greatly benefit the maintenance and\u002For usage of this package.\n\nIf and when the MSGV is increased it will be done so in a minimum of a `Minor` release bump.\n\nLicense\n-------\nDistributed under MIT License, please see license file within the code for more details.\n\nMaintainers\n-----------\nThis project has grown large enough that more than one person is required to properly support the community.\nIf you are interested in becoming a maintainer please reach out to me https:\u002F\u002Fgithub.com\u002Fdeankarn\n","go-playground\u002Fvalidator 是一个用于 Go 语言的结构体和字段验证库，支持跨字段、跨结构体以及对 Map、Slice 和 Array 的深层验证。其核心功能包括通过标签或自定义验证器实现跨字段和跨结构体验证，能够处理多维字段的任何层级验证，并支持接口类型及其底层类型的验证。此外，它还提供了别名验证标签、自定义错误消息国际化等功能。该库适用于需要进行复杂数据验证的应用场景，如Web后端开发中的表单验证等，特别是与 Gin 框架结合使用时更为方便。",2,"2026-06-11 03:00:39","top_language"]