{"id":13413493,"url":"https://github.com/pioz/faker","last_synced_at":"2025-03-02T09:19:41.494Z","repository":{"id":57541703,"uuid":"281773421","full_name":"pioz/faker","owner":"pioz","description":"Random fake data and struct generator for Go.","archived":false,"fork":false,"pushed_at":"2023-10-06T09:37:59.000Z","size":609,"stargazers_count":90,"open_issues_count":0,"forks_count":11,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-07-31T20:52:23.441Z","etag":null,"topics":["factory","faker","generator","golang","random","struct"],"latest_commit_sha":null,"homepage":"https://github.com/pioz/faker","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pioz.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}},"created_at":"2020-07-22T20:09:46.000Z","updated_at":"2024-06-13T23:17:03.000Z","dependencies_parsed_at":"2024-01-08T15:34:47.844Z","dependency_job_id":null,"html_url":"https://github.com/pioz/faker","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pioz%2Ffaker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pioz%2Ffaker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pioz%2Ffaker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pioz%2Ffaker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pioz","download_url":"https://codeload.github.com/pioz/faker/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241482717,"owners_count":19969964,"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":["factory","faker","generator","golang","random","struct"],"created_at":"2024-07-30T20:01:41.610Z","updated_at":"2025-03-02T09:19:41.451Z","avatar_url":"https://github.com/pioz.png","language":"Go","readme":"# Faker\n\n![Go](https://github.com/pioz/faker/workflows/Go/badge.svg)\n[![Go Report Card](https://goreportcard.com/badge/github.com/pioz/faker)](https://goreportcard.com/report/github.com/pioz/faker)\n[![codecov](https://codecov.io/gh/pioz/faker/branch/master/graph/badge.svg)](https://codecov.io/gh/pioz/faker)\n[![awesome-go](https://camo.githubusercontent.com/13c4e50d88df7178ae1882a203ed57b641674f94/68747470733a2f2f63646e2e7261776769742e636f6d2f73696e647265736f726875732f617765736f6d652f643733303566333864323966656437386661383536353265336136336531353464643865383832392f6d656469612f62616467652e737667)](https://github.com/avelino/awesome-go)\n[![GoReference](https://pkg.go.dev/badge/mod/github.com/pioz/faker)](https://pkg.go.dev/github.com/pioz/faker)\n\u003c!-- [![GoDoc](https://godoc.org/github.com/pioz/faker?status.svg)](https://godoc.org/github.com/pioz/faker) --\u003e\n\nRandom fake data and struct generator for Go.\n\n* More than 100 generator functions\n* Struct generator\n* Unique data generator\n* Builtin types support\n* Easily customizable\n* Zero dependencies\n* Recursive infinite loop detector\n* Benchmarks (coming soon)\n\n## Installation\n\n    go get github.com/pioz/faker\n\n## Example\n\n```go\nfaker.SetSeed(623)\n\nfmt.Println(faker.Username())\nfmt.Println(faker.String())\nfmt.Println(faker.IntInRange(1, 10))\nfmt.Println(faker.CurrencyName())\n// Output: spicule\n// gzaazJyRGt3jDnVh6ik7R9FO0AU1HcOzdOXbmNVBRQ5pq8n9tHf9B21PIFozLEzsoY4wILvZjTxSLQmD3UOAamDgVR411T3YHleDTgLuz90XSO3NFZm1AnaJiJamVRcNGD2zmi4qWkcjKF3E4JKgn1DiCeC3eSb5WELsw8XqRzlvJqG\n// 10\n// Myanmar Kyat\n```\n\nPlease refer to the [godoc](https://godoc.org/github.com/pioz/faker) for all available functions and more.\n\n## Struct Builder Example\n\n```go\nfaker.SetSeed(622)\n\n// Define a new builder\ncolorBuilder := func(params ...string) (interface{}, error) {\n  return faker.Pick(\"Red\", \"Yellow\", \"Blue\", \"Black\", \"White\"), nil\n}\n\n// Register a new builder named \"color\" for string type\nerr := faker.RegisterBuilder(\"color\", \"string\", colorBuilder)\nif err != nil {\n  panic(err)\n}\n\ntype Animal struct {\n  Name  string `faker:\"username\"`\n  Color string `faker:\"color\"` // Use custom color builder\n}\n\ntype Person struct {\n  FirstName string            `faker:\"firstName\"`         // Any available function case insensitive\n  LastName  *string           `faker:\"lastName\"`          // Pointer are also supported\n  Age       int               `faker:\"intinrange(0,120)\"` // Can call with parameters\n  UUID      string            `faker:\"uuid;unique\"`       // Guarantees a unique value\n  Number    int               `faker:\"-\"`                 // Skip this field\n  Code      string            // No tag to use default builder for this field type\n  Pet       Animal            // Recursively fill this struct\n  Nicknames []string          `faker:\"username;len=3\"`          // Build an array of size 3 using faker.Username function\n  Extra     map[string]string `faker:\"stringWithSize(3);len=2\"` // map are supported\n}\n\np := Person{}\nerr = faker.Build(\u0026p)\nif err != nil {\n  panic(err)\n}\nfmt.Println(p.FirstName)\nfmt.Println(*p.LastName)\nfmt.Println(p.Age)\nfmt.Println(p.UUID)\nfmt.Println(p.Number)\nfmt.Println(p.Code)\nfmt.Println(p.Pet.Name)\nfmt.Println(p.Pet.Color)\nfmt.Println(len(p.Nicknames))\nfmt.Println(p.Nicknames[0])\nfmt.Println(p.Nicknames[1])\nfmt.Println(p.Nicknames[2])\nfmt.Println(p.Extra)\n// Output: Wilber\n// Gutkowski\n// 25\n// ff8d6917-b920-46e6-b1be-dc2d48becfcb\n// 0\n// z\n// honegger\n// Red\n// 3\n// teagan\n// polypeptide\n// chinfest\n// map[70w:3F6 gQS:isq]\n```\n\n## Factory\n\nOne of the nice things about Faker is that it can also be used as a factory\nlibrary. In fact when we call the `faker.Build` function if a value is not\nzero then it is not modified, leaving the original value. This allows you to\ncreate factory functions very easily:\n\n```go\nfaker.SetSeed(623)\n\ntype User struct {\n    Username string `faker:\"username\"`\n    Email    string `faker:\"email\"`\n    Country  string `faker:\"CountryAlpha2\"`\n}\n\nitalianUserFactory := func() *User {\n    u := \u0026User{Country: \"IT\"}\n    faker.Build(u)\n    return u\n}\n\nitalianUser := italianUserFactory()\nfmt.Println(italianUser)\n// Output: \u0026{spicule hoag@ornamented.biz IT}\n```\n\n## Customization\n\nA builder is a variadic function that will take an arbitrary number of strings\nas arguments and return an interface or an error. This function (builder) can\nbe used to generate fake data and customize the behaviour of Faker. Here an example:\n\n```go\nfaker.SetSeed(1802)\n\n// Define a new builder\nbuilder := func(params ...string) (interface{}, error) {\n    if len(params) \u003e 0 \u0026\u0026 params[0] == \"melee\" {\n        return faker.Pick(\"Barbarian\", \"Bard\", \"Fighter\", \"Monk\", \"Paladin\", \"Rogue\"), nil\n    }\n    return faker.Pick(\"Cleric\", \"Druid\", \"Ranger\", \"Sorcerer\", \"Warlock\", \"Wizard\"), nil\n}\n\n// Register a new builder named \"dndClass\" for string type\nerr := faker.RegisterBuilder(\"dndClass\", \"string\", builder)\nif err != nil {\n    panic(err)\n}\n\nplayer := \u0026struct {\n    Class string `faker:\"dndClass(melee)\"`\n    // other fields ...\n}{}\n\n// Build a struct with fake data\nfaker.Build(\u0026player)\n\nfmt.Println(player.Class)\n// Output: Paladin\n```\n\n## Contributing with new generator functions\n\nIf you want to contribute to faker with new generator functions please read this [wiki](https://github.com/pioz/faker/wiki/Contributing-with-new-generator-functions)!\n\n## Contributing\n\nBug reports and pull requests are welcome on GitHub at https://github.com/pioz/faker/issues.\n\n## License\n\nThe package is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).\n\n\n\n\n\n\n","funding_links":[],"categories":["Miscellaneous","Microsoft Office","其他杂项","杂项","Uncategorized"],"sub_categories":["Uncategorized","暂未分类","未分类的","暂未分类这些库被放在这里是因为其他类别似乎都不适合。"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpioz%2Ffaker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpioz%2Ffaker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpioz%2Ffaker/lists"}