package locodecolumn import ( "fmt" "git.frostfs.info/TrueCloudLab/frostfs-locode-db/pkg/locode" ) const countryCodeLen = 2 // CountryCode represents ISO 3166 alpha-2 Country Code. type CountryCode [countryCodeLen]uint8 // Symbols returns digits of the country code. func (cc *CountryCode) Symbols() [countryCodeLen]uint8 { return *cc } // CountryCodeFromString parses a string and returns the country code. func CountryCodeFromString(s string) (*CountryCode, error) { if l := len(s); l != countryCodeLen { return nil, fmt.Errorf("incorrect country code length: expect: %d, got: %d", countryCodeLen, l, ) } for i := range s { if !isUpperAlpha(s[i]) { return nil, locode.ErrInvalidString } } cc := CountryCode{} copy(cc[:], s) return &cc, nil }