Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mikekonan/go-countries
https://github.com/mikekonan/go-countries
iso3166-2
Last synced: about 1 month ago
JSON representation
- Host: GitHub
- URL: https://github.com/mikekonan/go-countries
- Owner: mikekonan
- License: mit
- Created: 2020-10-27T12:56:40.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2020-12-17T15:41:16.000Z (over 3 years ago)
- Last Synced: 2024-01-31T05:54:34.058Z (4 months ago)
- Topics: iso3166-2
- Language: Go
- Homepage:
- Size: 88.9 KB
- Stars: 13
- Watchers: 4
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Lists
- awesome-go - go-countries - Lightweight lookup over ISO-3166 codes. (Utilities / Utility/Miscellaneous)
- awesome-go - go-countries - Lightweight lookup over ISO-3166 codes. (Utilities / Utility/Miscellaneous)
- awesome-go-extra - go-countries - 10-27T12:56:40Z|2020-12-17T15:41:16Z| (Utilities / Fail injection)
- awesome-go-cn - go-countries - 3166代码查询。 (工具库 / 查询语)
- awesome-go - go-countries - Lightweight lookup over ISO-3166 codes. (Utilities / Utility/Miscellaneous)
- awesome-go - go-countries - Lightweight lookup over ISO-3166 codes. (Utilities / HTTP Clients)
- awesome-go-projects - go-countries - Lightweight lookup over ISO-3166 codes. (Utilities / HTTP Clients)
- awesome-go - go-countries - Lightweight lookup over ISO-3166 codes. (Utilities / Utility/Miscellaneous)
- awesome-go - go-countries - Lightweight lookup over ISO-3166 codes. (Utilities / Utility/Miscellaneous)
- awesome-go-cn - go-countries - 3166代码的轻量级查找。 [![godoc][D]](https://godoc.org/github.com/mikekonan/go-countries) (公用事业公司 / 实用程序/Miscellaneous)
- go-awesome-cn-star - go-countries - 3166代码查询。(9) (工具库`可以提升效率的通用代码库和工具` / 查询语)
- awesome-go-stars - go-countries - Lightweight lookup over ISO-3166 codes. (Utilities / Utility/Miscellaneous)
- awesome-go-with-stars - go-countries - Lightweight lookup over ISO-3166 codes. (Utilities / Utility/Miscellaneous)
- awesome-go - go-countries - Lightweight lookup over ISO-3166 codes. (Utilities / HTTP Clients)
- repo-1316-awesome-go-cn - go-countries - 3166代码的轻量级查找。 [![godoc][D]](https://godoc.org/github.com/mikekonan/go-countries) (公用事业公司 / 实用程序/Miscellaneous)
- repo-1211-awesome-go-cn - go-countries - 3166代码的轻量级查找。 [![godoc][D]](https://godoc.org/github.com/mikekonan/go-countries) (公用事业公司 / 实用程序/Miscellaneous)
- awesome-go-zh - go-countries - 3166代码的轻量级查找。 [![godoc][D]](https://godoc.org/github.com/mikekonan/go-countries) (公用事业公司 / 实用程序/Miscellaneous)
- Go-awesome - go-countries - Lightweight lookup over ISO-3166 codes. (Utilities / Utility/Miscellaneous)
- awesome-go-cn - go-countries - 3166代码的轻量级查找。 [![近三年未更新][Y]](https://github.com/mikekonan/go-countries) [![godoc][D]](https://godoc.org/github.com/mikekonan/go-countries) (公用事业公司 / 实用程序/Miscellaneous)
- awesome-go - go-countries - Lightweight lookup over ISO-3166 codes. (Utilities / Utility/Miscellaneous)
- awesome-go - go-countries - Lightweight lookup over ISO-3166 codes. (Utilities / HTTP Clients)
- awesome-go - go-countries - Lightweight lookup over ISO-3166 codes. (Utilities / Utility/Miscellaneous)
- awesome-go - go-countries - Lightweight lookup over ISO-3166 codes. (Utilities / Utility/Miscellaneous)
README
[![Go Report Card](https://goreportcard.com/badge/github.com/mikekonan/go-countries)](https://goreportcard.com/report/github.com/mikekonan/go-countries)
# go-countries
Lightweight lookup over ISO-3166 codes. Each unit implements `driver.Valuer`, `ozzo validation.Validate`, `Stringer`, `json.Unmarshaler` interfaces.This library has been created with the purpose to facilitate search and transfer of ISO-3166 country codes.
Created with a codegen - check generator branch.
# Installation
```go get github.com/mikekonan/go-countries```# Usage:
//1. use in your structs
type User struct {
Name string `json:"name" db:"name"`
Country country.Alpha2Code `json:"country" db:"country"`
}func main() {
user := User{}
//2. use in your wire
json.Unmarshal([]byte(`{"name":"name", "country": "ca"}`), &user)//3. check is set
user.Country.IsSet() //check user country is provided//4. validate using ozzo-validation
if err := validation.ValidateStruct(&user, validation.Field(&user.Country, validation.Required, user.Country)); err != nil {
log.Fatal(err)
}//5. lookup by alpha2, alpha3, country name
if userCountry, ok := country.ByAlpha2Code(user.Country); ok {
fmt.Printf("country name - '%s', alpha-2 - '%s', alpha-3 - '%s'", userCountry.Name(), userCountry.Alpha2Code(), userCountry.Alpha3Code())
}//6. store in db
fmt.Println(user.Country.Value()) //prints 'CA'//7. use specific countries
fmt.Println(country.Canada.Alpha2Code())
}
# API
### Lookup:
country.ByNameStrErr()
country.ByNameErr()
country.ByNameStr()
country.ByName()
country.ByAlpha2CodeStrErr()
country.ByAlpha2CodeErr()
country.ByAlpha2CodeStr()
country.ByAlpha2Code()
country.ByAlpha3CodeStrErr()
country.ByAlpha3CodeErr()
country.ByAlpha3CodeStr()
country.ByAlpha3Code()### Constants:
...
country.Canada
country.Alpha2CA
country.Alpha3CAN
country.NameCanada
...### Types:
type Country struct {
name Name
alpha2 Alpha2Code
alpha3 Alpha3Code
}
func (c Country) Name() Name { return c.name }
func (c Country) Alpha2Code() Alpha2Code { return c.alpha2 }
func (c Country) Alpha3Code() Alpha3Code { return c.alpha3 }
func (c Country) NameStr() string { return c.name.String() }
func (c Country) Alpha2CodeStr() string { return c.alpha2.String() }
func (c Country) Alpha3CodeStr() string { return c.alpha3.String() }