{"id":19463863,"url":"https://github.com/kasworld/argdefault","last_synced_at":"2026-06-08T20:31:09.615Z","repository":{"id":57523029,"uuid":"219961846","full_name":"kasworld/argdefault","owner":"kasworld","description":"config struct from command args with default","archived":false,"fork":false,"pushed_at":"2020-05-15T03:15:27.000Z","size":16,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-25T13:30:42.847Z","etag":null,"topics":["commandline-argument","golang","reflection"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kasworld.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}},"created_at":"2019-11-06T09:40:18.000Z","updated_at":"2020-05-15T03:33:28.000Z","dependencies_parsed_at":"2022-08-28T08:12:18.544Z","dependency_job_id":null,"html_url":"https://github.com/kasworld/argdefault","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/kasworld/argdefault","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kasworld%2Fargdefault","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kasworld%2Fargdefault/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kasworld%2Fargdefault/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kasworld%2Fargdefault/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kasworld","download_url":"https://codeload.github.com/kasworld/argdefault/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kasworld%2Fargdefault/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34080025,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-08T02:00:07.615Z","response_time":111,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["commandline-argument","golang","reflection"],"created_at":"2024-11-10T18:12:30.119Z","updated_at":"2026-06-08T20:31:09.576Z","avatar_url":"https://github.com/kasworld.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# make commandline argument from struct field and tag and set field value \n\nstruct 의 field와 tag로 부터 명령행 인자의 이름과 default값을 자동으로 만들어 냅니다. \n\n또 명령행 인자로 주어진 값을 자동으로 struct의 해당 field에 넣어 줍니다. \n\n# 기능 \n\ngolang reflect를 사용해서 struct 의 field 이름과 tag 내용으로 \n\ncommandline에서 읽을 인자의 이름과 default 값을 자동으로 생성해주고 \n\n또 인자로 받은 값을 struct의 filed에 자동으로 넣어 줍니다. \n\n이를 사용해서 프로그램의 config struct 가 변경될때마다 \n\n해당하는 필드를 명령행에서 읽어 들이는 코드를 변경하는 수고를 덜 수 있습니다. \n\n## struct filed의 tag 내용 \n\ndefault : 인자가 없는 경우 사용할 기본 값 \n\nargname : 이 태그가 있는 경우 이 필드가 commandline argument로 부터 설정됩니다. \n\n    빈 값인 경우 : 필드 이름이 argument 이름이 됩니다. \n    있는 경우 : 이 값이 argument 이름이 됩니다. \n\n## 지원 하는 필드 타입 \n\n    int, int8, int16, int32, int64\n    uint, uint8, uint16, uint32, uint64\n    float64, float32\n    bool\n    string\n\n\n# 사용 예제 \n\nexample/main.go 참고 \n\n    struct가  아래와 같이 정의된 경우 \n    type Config struct {\n        BaseLogDir            string  `argname:\"\"`\n        DataFolder            string  `default:\"./serverdata\"`\n        ClientDataFolder      string  `default:\"./clientdata\" argname:\"\"`\n        GroundRPC             string  `default:\"localhost:14002\"  argname:\"\"`\n        ServicePort           string  `default:\":14101\"  argname:\"port\"`\n        AdminPort             string  `default:\":14201\"  argname:\"\"`\n        TowerFilename         string  `default:\"starting\" argname:\"\"`\n        TowerNumber           int     `default:\"1\" argname:\"\"`\n        DisplayName           string  `default:\"Default\" argname:\"\"`\n        ConcurrentConnections int     `default:\"10000\" argname:\"\"`\n        ActTurnPerSec         float64 `default:\"2.0\" argname:\"\"`\n        StandAlone            bool    `default:\"true\" argname:\"\"`\n    }\n\n    자동으로 아래와 같이 명령행 인자를 정의 해줍니다. \n    또 해당 인자가 명령행으로 주어진 경우 그 값을 struct의 해당 field에 넣어 줍니다. \n    -ActTurnPerSec float\n            ActTurnPerSec (default 2)\n    -AdminPort string\n            AdminPort (default \":14201\")\n    -BaseLogDir string\n            BaseLogDir\n    -ClientDataFolder string\n            ClientDataFolder (default \"./clientdata\")\n    -ConcurrentConnections int\n            ConcurrentConnections (default 10000)\n    -DisplayName string\n            DisplayName (default \"Default\")\n    -GroundRPC string\n            GroundRPC (default \"localhost:14002\")\n    -StandAlone\n            StandAlone (default true)\n    -TowerFilename string\n            TowerFilename (default \"starting\")\n    -TowerNumber int\n            TowerNumber (default 1)\n    -port string\n            ServicePort (default \":14101\")\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkasworld%2Fargdefault","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkasworld%2Fargdefault","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkasworld%2Fargdefault/lists"}