Go: рдкреНрд░рд╕реНрддрд╛рд╡: рдпреБрдХреНрддрд┐: рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рд╣реБрдЖ рдПрдирдо рд╕рдорд░реНрдерди рдЬреЛрдбрд╝реЗрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 1 рдЕрдкреНрд░реИрд▓ 2017  ┬╖  180рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: golang/go

рдореИрдВ рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдПрдирдо рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░ рдХреЗ type рдХреЗ рд░реВрдк рдореЗрдВ рдЧреЛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдПред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдкреНрд░реЛрдЯреЛрдмрдл рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдЙрдзрд╛рд░ рд▓рд┐рдП рдЧрдП рд╣реИрдВред

рдЖрдЬ рдЬрд╛рдУ рдореЗрдВ Enums

type SearchRequest int
var (
    SearchRequestUNIVERSAL SearchRequest = 0 // UNIVERSAL
    SearchRequestWEB       SearchRequest = 1 // WEB
    SearchRequestIMAGES    SearchRequest = 2 // IMAGES
    SearchRequestLOCAL     SearchRequest = 3 // LOCAL
    SearchRequestNEWS      SearchRequest = 4 // NEWS
    SearchRequestPRODUCTS  SearchRequest = 5 // PRODUCTS
    SearchRequestVIDEO     SearchRequest = 6 // VIDEO
)

type SearchRequest string
var (
    SearchRequestUNIVERSAL SearchRequest = "UNIVERSAL"
    SearchRequestWEB       SearchRequest = "WEB"
    SearchRequestIMAGES    SearchRequest = "IMAGES"
    SearchRequestLOCAL     SearchRequest = "LOCAL"
    SearchRequestNEWS      SearchRequest = "NEWS"
    SearchRequestPRODUCTS  SearchRequest = "PRODUCTS"
    SearchRequestVIDEO     SearchRequest = "VIDEO"
)

// IsValid has to be called everywhere input happens, or you risk bad data - no guarantees
func (sr SearchRequest) IsValid() bool {
    switch sr {
        case SearchRequestUNIVERSAL, SearchRequestWEB...:
            return true
    }
    return false
}

рднрд╛рд╖рд╛ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ

enum SearchRequest int {
    0 // UNIVERSAL
    1 // WEB
    2 // IMAGES
    3 // LOCAL
    4 // NEWS
    5 // PRODUCTS
    6 // VIDEO
}

enum SearchRequest string {
    "UNIVERSAL"
    "WEB"
    "IMAGES"
    "LOCAL"
    "NEWS"
    "PRODUCTS"
    "VIDEO"
}

рдкреИрдЯрд░реНрди рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд┐рд╢реЗрд╖ рдЖрд╡рд░рдг рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрддрд╛ рд╣реИ, рдФрд░ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдб рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдкрдардиреАрдп рдмрдирд╛рддрд╛ рд╣реИред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реНрддрд░ рдкрд░, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдЬрд╛рдВрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдЬ рд╣реЛ рдЪреБрдХреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдЕрдиреНрдп рдЕрд╕рдВрднрд╡ рд╣реИрдВ рдпрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЯреНрд░реЗрдбрдСрдл рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

  • рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд╛ : рдХреБрдЫ рднреА рдХрд┐рд╕реА рдХреЛ SearchRequest(99) рдпрд╛ SearchRequest("MOBILEAPP") рдХрд░рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдореЗрдВ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдЧреИрд░-рдирд┐рд░реНрдпрд╛рддрд┐рдд рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдХреНрд╕рд░ рдкрд░рд┐рдгрд╛рдореА рдХреЛрдб рдХреЛ / рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрдард┐рди рдмрдирд╛ рджреЗрддрд╛ рд╣реИред
  • рд░рдирдЯрд╛рдЗрдо рд╕реБрд░рдХреНрд╖рд╛ : рдЬреИрд╕реЗ рдкреНрд░реЛрдЯреЛрдмрдл рдЕрдирдорд░реНрд╢рд▓рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рднрд╛рд╖рд╛ рдХреЛ рд╡реНрдпрд╛рдкрдХ рд╕рддреНрдпрд╛рдкрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдХрднреА рднреА рдПрдХ рдПрдирдо рдХреЛ рддрддреНрдХрд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  • рдЯреВрд▓реАрдВрдЧ / рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг : рдХрдИ рдкреИрдХреЗрдЬ рдЖрдЬ рдлрд╝реАрд▓реНрдб рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдорд╛рдиреНрдп рд╡рд┐рдХрд▓реНрдк рдбрд╛рд▓рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рд░ рдХреЛрдИ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдмрд╛рдд рдХреА рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдкреБрд░рд╛рдиреА рдирд╣реАрдВ рд╣реИрдВред

рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рддреЗрдВ

  • рд╢реВрдиреНрдп : рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ enum рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдХреЗ, рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рдЖрд╡рд░рдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдХреЛрдИ рдЪрд╛рд╣рддрд╛ рд╣реИ рдХрд┐ nil рд╡реИрдз рд╣реЛ, рддреЛ рдПрдирдо рдХреЛ рдПрдХ рд╕реВрдЪрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
  • рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди / рд░рдирдЯрд╛рдЗрдо рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ : рдпрд╣ рдХрдард┐рди рдирд┐рд░реНрдгрдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЧреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдХреЛ рд╡реИрдз рдПрдирдо рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рд╕реНрдереИрддрд┐рдХ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рд╣рд░реА рдЗрдирдкреБрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдкрд░ рдореЗрд░реА рдХреЛрдИ рдордЬрдмреВрдд рд░рд╛рдп рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдкрд░ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рднрд╛рд╡ рдбрд╛рд▓реЗрдЧрд╛ред

Go2 LanguageChange NeedsInvestigation Proposal

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@ md2perpe рдЬреЛ рдХрд┐ рдПрдирдо рдирд╣реАрдВ рд╣реИред

  1. рдЙрдирдХреА рдЧрдгрдирд╛, рдкреБрдирд░рд╛рд╡реГрддрд┐ рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреАред
  2. рдЙрдирдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдЙрдкрдпреЛрдЧреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд╣реАрдВ рд╣реИред
  3. рдЙрдирдХреА рдХреЛрдИ рдкрд╣рдЪрд╛рди рдирд╣реАрдВ рд╣реИ:

```рдЬрд╛рдУ
рдкреИрдХреЗрдЬ рдореБрдЦреНрдп

рдЖрдпрд╛рдд (
"рдПрдлрдПрдордЯреА"
)

func рдореБрдЦреНрдп () {
SearchRequest int . рдЯрд╛рдЗрдк рдХрд░реЗрдВ
рд╕реНрдерд┐рд░рд╛рдВрдХ (
рдпреВрдирд┐рд╡рд░реНрд╕рд▓ рд╕рд░реНрдЪ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ = рдЖрдпреЛрдЯрд╛
рд╡реЗрдм
)

const (
    Another SearchRequest = iota
    Foo
)

fmt.Println("Should be false: ", (Web == Foo))
    // Prints: "Should be false:  true"

}
````

рдореИрдВ @derekperkins рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЧреЛ рдХреЛ рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХреЗ рдирд╛рдЧрд░рд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХреБрдЫ рдПрдирдо рдХреА рдЬрд░реВрд░рдд рд╣реИред рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЧреЛ 1 рдЧреНрд▓рд╛рд╕ рд╣рд╛рдЙрд╕ рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕рднреА 180 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@derekparker #19412 рдореЗрдВ рдПрдХ Go2 рдкреНрд░рд╕реНрддрд╛рд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЪрд░реНрдЪрд╛ рдЪрд▓ рд░рд╣реА рд╣реИ

рдореИрдВрдиреЗ рдЗрд╕реЗ рдЖрдЬ рдкрд╣рд▓реЗ рдкрдврд╝рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╡реИрдз рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдЕрдзрд┐рдХ рдХреЗрдВрджреНрд░рд┐рдд рдерд╛, рдЬрд╣рд╛рдВ рдпрд╣ рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд╛ рдПрдХ рд╕рдмрд╕реЗрдЯ рд╣реЛ, рд▓реЗрдХрд┐рди рдпрд╣ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдПрдХ рдХрдо рджреВрд░рдЧрд╛рдореА рдкрд░рд┐рд╡рд░реНрддрди рднреА рд╣реИ рдЬрд┐рд╕реЗ рдЖрдЬ рдЧреЛ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

enums рдпреЛрдЧ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╕рднреА рдкреНрд░рдХрд╛рд░ рд╕рдорд╛рди рд╣реЛрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддреНрдпреЗрдХ рд╕реЗ рдЬреБрдбрд╝рд╛ рдПрдХ рдорд╛рди рд╣реЛрддрд╛ рд╣реИред рдЯрд╛рдЗрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд▓реЗрдХрд┐рди рд╕рдорд╛рди рдкреНрд░рднрд╛рд╡ред рднрд▓реЗ рд╣реА, рдпрд╣ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рд╣реЛрдЧрд╛, рдпреЛрдЧ рдкреНрд░рдХрд╛рд░ рдЕрдзрд┐рдХ рдЬрдореАрди рдХреЛ рдХрд╡рд░ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдпреЛрдЧ рдкреНрд░рдХрд╛рд░ рдХреА рднреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИред Go1 рд╕рдВрдЧрддрддрд╛ рд╕рдордЭреМрддреЗ рдХреЗ рдХрд╛рд░рдг Go2 рддрдХ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЪреВрдВрдХрд┐ рдЗрди рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЛ, рдХрдо рд╕реЗ рдХрдо, рдПрдХ рдирдП рдХреАрд╡рд░реНрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЛ рднреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП

рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ, рд▓реЗрдХрд┐рди рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдкреНрд░рд╕реНрддрд╛рд╡ рд╕рдВрдЧрддрддрд╛ рд╕рдордЭреМрддреЗ рдХреЛ рдирд╣реАрдВ рддреЛрдбрд╝ рд░рд╣рд╛ рд╣реИред рдПрдХ рд░рд╛рдп рд╡реНрдпрдХреНрдд рдХреА рдЧрдИ рдереА рдХрд┐ Go1 рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдпреЛрдЧ рдкреНрд░рдХрд╛рд░ "рдмрд╣реБрдд рдмрдбрд╝реЗ" рдереЗред рдЕрдЧрд░ рдРрд╕рд╛ рд╣реИ, рддреЛ рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ рдПрдХ рдореВрд▓реНрдпрд╡рд╛рди рдордзреНрдп рдореИрджрд╛рди рд╣реИ рдЬреЛ Go2 рдореЗрдВ рдкреВрд░реНрдг рдпреЛрдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрджрдо рдкрддреНрдерд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЙрди рджреЛрдиреЛрдВ рдХреЛ рдПрдХ рдирдП рдХреАрд╡рд░реНрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдПрдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдорд╛рдиреНрдп Go1 рдХреЛрдб рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рдПрдХ рдирдИ рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рд╕рдореНрдореЛрд╣рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕рднреА рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЙрдкрдпреЛрдЧреА рд╣реИрдВ, рдпрд╛ рдХреЛрдИ рднреА рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛; рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ: рдХреНрдпрд╛ рд╡реЗ рднрд╛рд╖рд╛ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рдиреЗ рдФрд░ рд╕рднреА рдХреЛ рдирдИ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╕реАрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд╕рд╣реА рдард╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЙрдкрдпреЛрдЧреА рд╣реИрдВ? рдпрд╣рд╛рдБ рд╕рдореНрдореЛрд╣рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреНрдпрд╛ рд╣реИрдВ? рд▓реЛрдЧ рдЗрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рд▓реЛрдЧ рдорд╛рдиреНрдп рдПрдирдо рдорд╛рдиреЛрдВ рдХреЗ рд╕реЗрдЯ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ рддреЛ рд╡реЗ рдРрд╕рд╛ рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗ? рдХреНрдпрд╛ рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ рдЖрдкрдХреЛ рдХреБрдЫ рд╕реНрд╡рд┐рдЪ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдФрд░ рдХреБрдЫ рдХрд░рддрд╛ рд╣реИ?

рдпрд╣рд╛рдБ рд╡рд░реНрддрдорд╛рди рдЧреЛ рдореЗрдВ рдЧрдгрдирд╛ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рддрд░реАрдХрд╛ рд╣реИ:

type SearchRequest int

const (
    Universal SearchRequest = iota
    Web
    Images
    Local
    News
    Products
    Video
)

рдЗрд╕рдХрд╛ рдпрд╣ рдлрд╛рдпрджрд╛ рд╣реИ рдХрд┐ рдЭрдВрдбреЗ рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИ рдЬреЛ OR:ed рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдСрдкрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ | ):

type SearchRequest int

const (
    Universal SearchRequest = 1 << iota
    Web
    Images
    Local
    News
    Products
    Video
)

рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ рдХрд┐ enum рдХреАрд╡рд░реНрдб рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рд╕реЗ рдпрд╣ рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

@ md2perpe рдЬреЛ рдХрд┐ рдПрдирдо рдирд╣реАрдВ рд╣реИред

  1. рдЙрдирдХреА рдЧрдгрдирд╛, рдкреБрдирд░рд╛рд╡реГрддрд┐ рдирд╣реАрдВ рдХреА рдЬрд╛ рд╕рдХрддреАред
  2. рдЙрдирдХреЗ рдкрд╛рд╕ рдХреЛрдИ рдЙрдкрдпреЛрдЧреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд╣реАрдВ рд╣реИред
  3. рдЙрдирдХреА рдХреЛрдИ рдкрд╣рдЪрд╛рди рдирд╣реАрдВ рд╣реИ:

```рдЬрд╛рдУ
рдкреИрдХреЗрдЬ рдореБрдЦреНрдп

рдЖрдпрд╛рдд (
"рдПрдлрдПрдордЯреА"
)

func рдореБрдЦреНрдп () {
SearchRequest int . рдЯрд╛рдЗрдк рдХрд░реЗрдВ
рд╕реНрдерд┐рд░рд╛рдВрдХ (
рдпреВрдирд┐рд╡рд░реНрд╕рд▓ рд╕рд░реНрдЪ рд░рд┐рдХреНрд╡реЗрд╕реНрдЯ = рдЖрдпреЛрдЯрд╛
рд╡реЗрдм
)

const (
    Another SearchRequest = iota
    Foo
)

fmt.Println("Should be false: ", (Web == Foo))
    // Prints: "Should be false:  true"

}
````

рдореИрдВ @derekperkins рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЧреЛ рдХреЛ рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХреЗ рдирд╛рдЧрд░рд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдХреБрдЫ рдПрдирдо рдХреА рдЬрд░реВрд░рдд рд╣реИред рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛, рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдЧреЛ 1 рдЧреНрд▓рд╛рд╕ рд╣рд╛рдЙрд╕ рдХреЛ рддреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@ md2perpe iota enums рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реАрдорд┐рдд рддрд░реАрдХрд╛ рд╣реИ, рдЬреЛ рд╕реАрдорд┐рдд рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

  1. рдЖрдкрдХреЛ int рдЪрд╛рд╣рд┐рдП
  2. рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдХреЗ рднреАрддрд░ рд╕реБрд╕рдВрдЧрдд рд░рд╣рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдмрд╛рд╣рд░реА рд╕реНрдерд┐рддрд┐ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреА рдирд╣реАрдВ

рдЬреИрд╕реЗ рд╣реА рдЖрдкрдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдмрд╛рд╣рд░реА рдЭрдВрдбреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрдо рд╣реИ, iota рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдмрд╛рд╣рд░реА/рдбреЗрдЯрд╛рдмреЗрд╕ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рдЦрд┐рд▓рд╛рдл рдорд┐рд▓рд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ iota рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рддрдм рд╕реНрд░реЛрдд рдХреЛрдб рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдСрд░реНрдбрд░ рдХрд░рдиреЗ рдФрд░ рдкреБрди: рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рд╕реЗ рдбреЗрдЯрд╛ рдЕрдЦрдВрдбрддрд╛ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛрддреА рд╣реИрдВред

рдХреЛрдб рдХреЛ рдЫреЛрдЯрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдПрдХ рдРрд╕рд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ рдЬреЛ рдбреЗрдЯрд╛ рдЕрдЦрдВрдбрддрд╛ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ рдЬреЛ рдЖрдЬ рднрд╛рд╖рд╛ рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@ianlancetaylor

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрдпрд╛ рд▓реЛрдЧ рдорд╛рдиреНрдп рдПрдирдо рдорд╛рдиреЛрдВ рдХреЗ рд╕реЗрдЯ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреА рдЙрдореНрдореАрдж рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ рддреЛ рд╡реЗ рдРрд╕рд╛ рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗ?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдареЛрд╕ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ @bep рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдПрдХ рдорд╛рдирдХ рдЧреЛ рд▓реВрдк рдХреА рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдП рдЧрдП рдХреНрд░рдо рдореЗрдВ рд▓реВрдк рдХрд░реЗрдВрдЧреЗред

for i, val := range SearchRequest {
...
}

рдпрджрд┐ рдЧреЛ рдХреЛ рдЖрдИрдУрдЯрд╛ рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдЬреЛрдбрд╝рдирд╛ рдерд╛, рддреЛ рдЙрд╕ рд╕рдордп рдмреАрдЬрдЧрдгрд┐рддреАрдп рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП?

рдкрд░рд┐рднрд╛рд╖рд╛ рдЖрджреЗрд╢ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрджреЗрд╢ рджреЗрдиреЗ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ, рдФрд░ рдкреНрд░реЛрдЯреЛрдмрдл рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдлрд╝реАрд▓реНрдб рдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдкрд╣рд▓рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдлрд╝реАрд▓реНрдб рд╣реЛрдЧрд╛ред

@bep рдЙрддрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдпреЗ рд╕рднреА рдЧреБрдг рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

package main

var SearchRequests []SearchRequest
type SearchRequest struct{ name string }
func (req SearchRequest) String() string { return req.name }

func Request(name string) SearchRequest {
    req := SearchRequest{name}
    SearchRequests = append(SearchRequests, req)
    return req
}

var (
    Universal = Request("Universal")
    Web       = Request("Web")

    Another = Request("Another")
    Foo     = Request("Foo")
)

func main() {
    fmt.Println("Should be false: ", (Web == Foo))
    fmt.Println("Should be true: ", (Web == Web))
    for i, req := range SearchRequests {
        fmt.Println(i, req)
    }
}

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╕рдВрдХрд▓рди-рд╕рдордп рдХреА рдЬрд╛рдБрдЪ рдХреА рдЧрдИ рдПрдирдо рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЧреЛ рдкреНрд░рд┐рдЯреА рдХреЗ рдкрд╛рд╕ рдЕрднреА рдпрд╣ рд╣реИред рдореЗрд░рд╛ рддрд░реНрдХ рд╣реИ

  • рдХрдВрдкрд╛рдЗрд▓-рдЯрд╛рдЗрдо рдЪреЗрдХ рдХрд┐рдП рдЧрдП рдПрдирдо рди рддреЛ рдкреАрдЫреЗ рдХреА рдУрд░ рд╣реИрдВ рдФрд░ рди рд╣реА рдЖрдЧреЗ рдХреА рдУрд░ рдЬреЛрдбрд╝ рдпрд╛ рд╣рдЯрд╛рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдВрдЧрдд рд╣реИрдВред #18130 рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдиреЗ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ; enums рдЙрд╕ рдкреНрд░рдпрд╛рд╕ рдХреЛ рдирд╖реНрдЯ рдХрд░ рджреЗрдЧрд╛; рдХреЛрдИ рднреА рдкреИрдХреЗрдЬ рдЬреЛ рдХрднреА рднреА рдПрдирдо рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдФрд░ рдЬрдмрд░рди рдЙрдирдХреЗ рд╕рднреА рдЖрдпрд╛рддрдХреЛрдВ рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛ред
  • рдореВрд▓ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рджрд╛рд╡реЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдкреНрд░реЛрдЯреЛрдмрдл (рдЙрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░рдг рдХреЗ рд▓рд┐рдП) рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдирдо рдлрд╝реАрд▓реНрдб рдХреА рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдкреНрд░реЛрдЯреЛ 2 рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдПрдирдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЬреНрдЮрд╛рдд рдорд╛рди рдХреЛ рдПрдХ рдЕрдЬреНрдЮрд╛рдд рдХреНрд╖реЗрддреНрд░ рдХреА рддрд░рд╣ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдкреНрд░реЛрдЯреЛ 3 рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ, рдХрд┐ рдЙрддреНрдкрдиреНрди рдХреЛрдб рдореЗрдВ рдПрдиреНрдХреЛрдбреЗрдб рдорд╛рди рдХреЗ рд╕рд╛рде рдЙрдирдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдЬреИрд╕реЗ рдЧреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдирдХрд▓реА-рдПрдирдо рдХреЗ рд╕рд╛рде рдХрд░рддрд╛ рд╣реИ)
  • рдЕрдВрдд рдореЗрдВ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдЖрдк рд╕реНрдЯреНрд░рд┐рдВрдЧрд░ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдбрд╝рд╛рдкрди рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдПрдХ рдкреНрд░рд╣рд░реА MaxValidFoo const рдЬреЛрдбрд╝рдХрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд▓реЗрдХрд┐рди рдКрдкрд░ рдЪреЗрддрд╛рд╡рдиреА рджреЗрдЦреЗрдВред рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рднреА рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП)ред рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рджреЛ рдХреЙрдиреНрд╕реНрдЯ-рдбрд┐рдХреНрд▓реЗрд╕ рдирд╣реАрдВ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рдмрд╕ рдЕрдкрдиреЗ CI рдореЗрдВ рдПрдХ рдЯреВрд▓ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░реЗрдВ рдЬреЛ рдЙрд╕рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИред
  • рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрдирдЯреНрд╕ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред рд╕реНрдЯреНрд░рд┐рдВрдЧрд░ рдЯреВрд▓ рдХреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рдФрд░ рд╕реЗ рдХрдирд╡рд░реНрдЯ рдХрд░рдирд╛ рдХрд╡рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП; рдЕрдВрдд рдореЗрдВ, рдЬреЗрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ (рдЬрдм рддрдХ рдХрд┐ рдЖрдк рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд╕реБрдЭрд╛рд╡ рдирд╣реАрдВ рджреЗрддреЗ рдХрд┐ "рд╕реНрдЯреНрд░рд┐рдВрдЧ-рдПрдирдореНрд╕" рдкрд░ рдХреЛрдИ рддреБрд▓рдирд╛ рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд╛рд▓реВ рдХрд░реЗрдЧреА ...)

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рдореЗрд░реЗ рд▓рд┐рдП рдмрд╕ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ -1ред рдЗрддрдирд╛ рд╣реА рдирд╣реАрдВ рдпрд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реИ; рдпрд╣ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рджрд░реНрдж рд╣реЛрддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЧреЛ рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдПрдирдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрд╣реБрдд рд╕реАрдзрд╛ рд╣реИ рдФрд░ рдкрд░реНрдпрд╛рдкреНрдд рд╕рдВрдХрд▓рди рд╕рдордп рдЬрд╛рдВрдЪ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореВрд▓ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдЬрдВрдЧ рдХреА рдЙрдореНрдореАрдж рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдВрднрд╡рддрдГ рдЧреЛ 1 рдЧрд╛рд░рдВрдЯреА рдХреЛ рддреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред

рдЪреВрдВрдХрд┐ рдПрдирдо рдпреЛрдЧ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рд╣реИ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдЬреНрдЮрд╛рди рдпрд╣ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдпреЛрдЧ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрддреНрддрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╣реИ https://play.golang.org/p/1BvOakvbj2

(рдпрджрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ: рд╣рд╛рдБ, рдпрд╣ рдПрдХ рдордЬрд╛рдХ рд╣реИ - рдХреНрд▓рд╛рд╕рд┐рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдлреИрд╢рди рдореЗрдВ, рдореИрдВ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдмрдВрдж рд╣реВрдВ)ред

рдкреВрд░реА рдЧрдВрднреАрд░рддрд╛ рд╕реЗ, рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЧрдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдЯреВрд▓рд┐рдВрдЧ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреАред

рд╕реНрдЯреНрд░рд┐рдВрдЧрд░ рдЯреВрд▓ рдХреА рддрд░рд╣, рдПрдХ "рд░реЗрдВрдЬрд░" рдЯреВрд▓ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдКрдкрд░ рд▓рд┐рдВрдХ рдХрд┐рдП рдЧрдП рдХреЛрдб рдореЗрдВ Iter func рдХреЗ рдмрд░рд╛рдмрд░ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рддрд╛рд░ рдкрд░ рднреЗрдЬрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ {рдмрд╛рдЗрдирд░реА, рдЯреЗрдХреНрд╕реНрдЯ} {рдорд╛рд░реНрд╢рд▓рд░, рдЕрдирдорд░реНрд╢рд▓рд░} рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рдмрд╣реБрдд рд╕реА рдЫреЛрдЯреА рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬреЛ рдЗрд╕ рдЕрд╡рд╕рд░ рдкрд░ рдХрд╛рдлреА рдЙрдкрдпреЛрдЧреА рд╣реЛрдВрдЧреАред

рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рд╕рд┐рдореНрдпреБрд▓реЗрдЯреЗрдб рдпреЛрдЧ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рд╕рдВрдкреВрд░реНрдгрддрд╛ рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╡реЗрдЯрд┐рдВрдЧ/рд▓рд┐рдВрдЯрд░ рдЯреВрд▓ рд╣реИрдВред рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдИрдУрдЯрд╛ рдПрдирдореНрд╕ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдХрд╛рд░рдг рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЬрдм рдорд╛рдорд▓реЗ рдЫреВрдЯ рдЬрд╛рддреЗ рд╣реИрдВ рдпрд╛ рдЕрдорд╛рдиреНрдп рдЕрдкреНрд░рдХрд╛рд╢рд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╢рд╛рдпрдж рдЗрд╕реЗ 0 рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рднреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП?)

рднрд╛рд╖рд╛ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рдмрд┐рдирд╛ рднреА рдЙрд╕ рдореЛрд░реНрдЪреЗ рдкрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реБрдзрд╛рд░ рдХреА рдЧреБрдВрдЬрд╛рдЗрд╢ рд╣реИред

Enums рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдерд╛рдкрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдкреВрд░рдХ рд╣реЛрдВрдЧреЗред рдЬреИрд╕рд╛ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдХрдИ рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рдПрдирдо рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдмреНрд▓реЙрдХреНрд╕ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИрдВред рдЬрд┐рд╕ рддрд░рд╣ рдЪреИрдирд▓ рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреЗ рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рд╣реИрдВ рдЬреЛ рдЕрдзрд┐рдХ рдЖрджрд┐рдо рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдирд┐рд░реНрдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЙрд╕реА рддрд░рд╣ рдПрдирдо рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдордиреБрд╖реНрдп рдЕрднрд┐рдорд╛рдиреА, рдЕрдирд╛рдбрд╝реА рдФрд░ рднреБрд▓рдХреНрдХрдбрд╝ рд╣реИрдВ, рдПрдирдо рдЬреИрд╕реЗ рддрдВрддреНрд░ рдорд╛рдирд╡ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдХрдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВред

@bep рдореБрдЭреЗ рдЖрдкрдХреЗ рддреАрдиреЛрдВ рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рдЕрд╕рд╣рдордд рд╣реЛрдирд╛ рд╣реИред рдЧреЛ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рдПрдирдо рджреГрдврд╝рддрд╛ рд╕реЗ рд╕реА рдПрдирдореНрд╕ рд╕реЗ рдорд┐рд▓рддреЗ рдЬреБрд▓рддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╡реИрдз рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдХреЛрдИ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ, рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рдХреЛрдИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрд╛рдВрддрд░рдг рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдЕрд▓рдЧ рдкрд╣рдЪрд╛рди рд╣реЛред

рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрджрд┐ рдЖрдк рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдкрд╣рд▓реЗ рдФрд░ рдЕрдВрддрд┐рдо рдорд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдареАрдХ рд╣реИред рдЖрдк рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЬрдм рдЖрдк рдирдП рдорд╛рди рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рддреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ iota рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдПрдХ рдЕрддреАрдд рдХрд╛ рдЕрдВрдд рдмрдирд╛ рджреЗрдЧрд╛ред рдЬрд┐рд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рднрд╛рд╖рд╛ рдХреЗ рд╕рдорд░реНрдерди рд╕реЗ рд╕рд╛рд░реНрдердХ рдЕрдВрддрд░ рдЖрдПрдЧрд╛, рд╡рд╣ рд╣реИ рдЬрдм рдПрдирдо рдХреЗ рдореВрд▓реНрдп рдЧреИрд░-рд╕рдиреНрдирд┐рд╣рд┐рдд рд╣реИрдВред

рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрд╛рдВрддрд░рдг рдХреЗрд╡рд▓ рдПрдХ рдЫреЛрдЯрд╛ рдорд╛рди рд╣реИ: рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рдиреЛрдВ рдХреЛ int рдорд╛рдиреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд▓рд┐рдЦрдиреЗ рд╕реЗ рдмрд╣реБрдд рдХрдо рд▓рд╛рдн рд╣реЛрддрд╛ рд╣реИред рдПрдХ рд╡реИрдХрд▓реНрдкрд┐рдХ рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ, рдпрд╣ рдЕрдзрд┐рдХ рдореВрд▓реНрдп рдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪрд░ рдирд╛рдореЛрдВ рдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЕрднреНрдпрд╛рд╡реЗрджрди рдХреЗ рдЕрдиреБрд░реВрдк рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд╛рдЙрдирд╕рд╛рдЗрдбреНрд╕ рднреА рд╣реИрдВред

рдЕрдВрдд рдореЗрдВ, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рди рдореБрдЭреЗ рдпрдХреАрди рднреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдЙрдкрдпреЛрдЧреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред Enums рдпреЛрдЧ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИрдВ, рдХрд╣рддреЗ рд╣реИрдВ, рд╣рд╛рд╕реНрдХреЗрд▓ред рдЙрдиреНрд╣реЗрдВ рдирдВрдмрд░ рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдзреНрд╡рдЬ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдПрдирдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрдо рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдкрд╛рд╕ ReadWriteMode = ReadMode | WriteMode рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдПрдХ рдЙрдкрдпреЛрдЧреА рдЪреАрдЬ рд╣реИред рдЕрдиреНрдп рдорд╛рди рднреА рд╣реЛрдирд╛ рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ DefaultMode = ReadMode рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рддрд░реАрдХрд╛ рдХрд┐рд╕реА рдХреЛ рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ const DefaultMode = ReadMode рд▓рд┐рдЦрдиреЗ рд╕реЗ рд░реЛрдХ рд╕рдХрддрд╛ рд╣реИ; рдПрдХ рдЕрд▓рдЧ рдШреЛрд╖рдгрд╛ рдореЗрдВ рдЗрд╕реЗ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╣реИ?

@bep рдореБрдЭреЗ рдЖрдкрдХреЗ рддреАрдиреЛрдВ рдмрд┐рдВрджреБрдУрдВ рд╕реЗ рдЕрд╕рд╣рдордд рд╣реЛрдирд╛ рд╣реИред рдЧреЛ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рдПрдирдо рджреГрдврд╝рддрд╛ рд╕реЗ рд╕реА рдПрдирдореНрд╕ рд╕реЗ рдорд┐рд▓рддреЗ рдЬреБрд▓рддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╡реИрдз рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдХреЛрдИ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ, рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рдХреЛрдИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрд╛рдВрддрд░рдг рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдЕрд▓рдЧ рдкрд╣рдЪрд╛рди рд╣реЛред

@alercah , рдХреГрдкрдпрд╛ рдЗрд╕ idomatic Go рдХреЛ рдХрд┐рд╕реА рднреА рдЪрд░реНрдЪрд╛ рдореЗрдВ "рдЬреАрддрдиреЗ рд╡рд╛рд▓реЗ рддрд░реНрдХ" рдХреЗ рд░реВрдк рдореЗрдВ рди рдЦреАрдВрдЪреЗрдВ; рдЧреЛ рдореЗрдВ рдмрд┐рд▓реНрдЯ-рдЗрди рдПрдирдо рдирд╣реАрдВ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХреБрдЫ рдЧреИрд░-рдореМрдЬреВрджрд╛ рдореБрд╣рд╛рд╡рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛, рдереЛрдбрд╝рд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдЧреЛ рдХреЛ рдПрдХ рдмреЗрд╣рддрд░ рд╕реА/рд╕реА++ рдпрд╛ рдХрдо рд╡рд░реНрдмреЛрдЬрд╝ рдЬрд╛рд╡рд╛ рдмрдирдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдмрд╛рдж рд╡рд╛рд▓реЗ рд╕реЗ рддреБрд▓рдирд╛ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдФрд░ рдЬрд╛рд╡рд╛ рдореЗрдВ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд Enum type рд╣реИ ("рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдПрдирдо рдкреНрд░рдХрд╛рд░ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЙрдирдХреЗ рд╕рдордХрдХреНрд╖реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИрдВред"): https://docs.oracle.com/javase/tutorial/java /javaOO/enum.html

рдФрд░, рдЬрдмрдХрд┐ рдЖрдк "рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рднрд╛рдЧ" рд╕реЗ рдЕрд╕рд╣рдордд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд╛рд╡рд╛ Enum рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕рднреА рддреАрди рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВред

рдореИрдВ рдЗрд╕ рддрд░реНрдХ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЧреЛ рджреБрдмрд▓рд╛, рд╕рд░рд▓ рдЖрджрд┐ рд╣реИ, рдФрд░ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордЭреМрддрд╛ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдореИрдВрдиреЗ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ рдХреБрдЫ рд╣реИрдХреА рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рджреЗрдЦреЗ рд╣реИрдВ рдЬреЛ рдЙрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди iota рдХрд╛ рдПрдХ рд╕реЗрдЯ

рдЧрдгрдирд╛ рдФрд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд░реВрдкрд╛рдВрддрд░рдг 'рдЧреЛ рдЬрдирд░реЗрдЯ' рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫреЗ рдЙрдореНрдореАрджрд╡рд╛рд░ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рд╕рдорд╛рдзрд╛рди рд╣реИрдВред рдЬрд╛рд╡рд╛ рдПрдирдо рдХреНрд▓рд╛рд╕рд┐рдХ рдПрдирдо рдФрд░ рдпреЛрдЧ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмреАрдЪ рдореЗрдВ рдХреБрдЫ рд╣реИрдВред рддреЛ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдпрд╣ рдПрдХ рдЦрд░рд╛рдм рднрд╛рд╖рд╛ рдбрд┐рдЬрд╛рдЗрди рд╣реИред
рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рдЧреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдФрд░ рдореБрдЭреЗ рднрд╛рд╖рд╛ X рд╕реЗ рднрд╛рд╖рд╛ Y рдореЗрдВ рд╕рднреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрдд рдХрд╛рд░рдг рдирд╣реАрдВ рджрд┐рдЦрддреЗ, рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рдХреЛрдИ рдкрд░рд┐рдЪрд┐рдд рд╣реИред

рдЬрд╛рд╡рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛ рдПрдирдо рдкреНрд░рдХрд╛рд░ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЕрдкрдиреЗ рд╕рдордХрдХреНрд╖реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИрдВ

рдпрд╣ рдПрдХ рджрд╢рдХ рдкрд╣рд▓реЗ рд╕рдЪ рдерд╛ред рдпреЛрдЧ рдкреНрд░рдХрд╛рд░ рдФрд░ рдкреИрдЯрд░реНрди рдорд┐рд▓рд╛рди рджреНрд╡рд╛рд░рд╛ рд╕рдВрдЪрд╛рд▓рд┐рдд рдЬрдВрдЧ рдореЗрдВ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЖрдзреБрдирд┐рдХ рд╢реВрдиреНрдп-рд▓рд╛рдЧрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреЗрдЦреЗрдВред

рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рдЧреЛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ, рдФрд░ рдореБрдЭреЗ рднрд╛рд╖рд╛ X рд╕реЗ рднрд╛рд╖рд╛ Y рдореЗрдВ рд╕рднреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрдд рдХрд╛рд░рдг рдирд╣реАрдВ рджрд┐рдЦрддреЗ, рд╕рд┐рд░реНрдл рдЗрд╕рд▓рд┐рдП рдХрд┐ рдХреЛрдИ рдкрд░рд┐рдЪрд┐рдд рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореИрдВ рдпрд╣рд╛рдВ рджрд┐рдП рдЧрдП рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрд╕рд╣рдордд рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди _ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рдЧреЛ_ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреБрдЫ рдХрд▓рд╛рддреНрдордХ рдЖрд╕рди рдкрд░ рдЬрд╛рдирд╛ рд╣реИред рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛рдлреА рдЙрдмрд╛рдК рдФрд░ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд╣реИред рдФрд░ рдЕрдХреНрд╕рд░ рдЖрдкрдХреЛ рдПрдХ рдбреНрд░реЙрдк-рдбрд╛рдЙрди рдмреЙрдХреНрд╕ рдХреЛ рдПрдХ рдПрдирдо рдХреЗ рд╕рд╛рде рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ ...

//go:generate enumerator Foo,Bar
рдПрдХ рдмрд╛рд░ рд▓рд┐рдЦрд╛, рд╣рд░ рдЬрдЧрд╣ рдЙрдкрд▓рдмреНрдзред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЙрджрд╛рд╣рд░рдг рд╕рд╛рд░ рд╣реИред

@bep рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдореВрд▓ рдЯрд┐рдкреНрдкрдгреА рдХреЛ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдкрдврд╝рд╛ рд╣реИред "рдЧреЛ рдЗрдбрд┐рдпреЛрдореИрдЯрд┐рдХ рдПрдирдореНрд╕" рдХреЛ рдлреВ рдЗрдВрдЯ + рдХреЙрдиреНрд╕реНрдЯ-рдбреЗрдХреНрд▓ + рдЖрдИрдУрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рдирд╛ рдерд╛, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ "рдЬреЛ рдХреБрдЫ рднреА рдЖрдк рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рд╡рд╣ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рдирд╣реАрдВ рд╣реИ"ред

@rsc Go2 рд▓реЗрдмрд▓ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рдореЗрд░реЗ рддрд░реНрдХ рдХреЗ рд╡рд┐рдкрд░реАрдд рд╣реИред # 19412 рдПрдХ рдкреВрд░реНрдг рдпреЛрдЧ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ, рдЬреЛ рдореЗрд░реЗ рд╕рд╛рдзрд╛рд░рдг рдПрдирдо рдкреНрд░рд╕реНрддрд╛рд╡ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╕реБрдкрд░рд╕реЗрдЯ рд╣реИ, рдФрд░ рдореИрдВ рдЗрд╕реЗ Go2 рдореЗрдВ рджреЗрдЦреВрдВрдЧрд╛ред рдореЗрд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЕрдЧрд▓реЗ 5 рд╡рд░реНрд╖реЛрдВ рдореЗрдВ Go2 рдХреЗ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдмрд╣реБрдд рдХрдо рд╣реИ, рдФрд░ рдореИрдВ рдХреБрдЫ рдХрдо рд╕рдордп рд╕реАрдорд╛ рдореЗрдВ рдХреБрдЫ рдШрдЯрд┐рдд рд╣реЛрддреЗ рд╣реБрдП рджреЗрдЦрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

рдпрджрд┐ рдПрдХ рдирдП рдЖрд░рдХреНрд╖рд┐рдд рдЦреЛрдЬрд╢рдмреНрдж рдХрд╛ рдореЗрд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡ enum BC рдХреЗ рд▓рд┐рдП рдЕрд╕рдВрднрд╡ рд╣реИ, рддреЛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдФрд░ рднреА рддрд░реАрдХреЗ рд╣реИрдВ, рдЪрд╛рд╣реЗ рд╡рд╣ рдПрдХ рдкреВрд░реНрдг рднрд╛рд╖рд╛ рдПрдХреАрдХрд░рдг рд╣реЛ рдпрд╛ go vet рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рдЯреВрд▓рд┐рдВрдЧред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдХрд╣рд╛ рдерд╛, рдореИрдВ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдирд╣реАрдВ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рджреГрдврд╝ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдпрд╣ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдЬреНрдЮрд╛рдирд╛рддреНрдордХ рдмреЛрдЭ рдЬреЛрдбрд╝реЗ рдмрд┐рдирд╛ рдЖрдЬ рдЧреЛ рдХреЗ рд▓рд┐рдП рдПрдХ рдореВрд▓реНрдпрд╡рд╛рди рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реЛрдЧрд╛ред

рдЧреЛ 2 рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдирдпрд╛ рдХреАрд╡рд░реНрдб рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдЧреЛ 1 рд╕рдВрдЧрддрддрд╛ рдЧрд╛рд░рдВрдЯреА рдХрд╛ рд╕реНрдкрд╖реНрдЯ рдЙрд▓реНрд▓рдВрдШрди рд╣реЛрдЧрд╛ред

рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ рдЕрднреА рддрдХ рдПрдирдо рдХреЗ рд▓рд┐рдП, рдпрд╛ рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдпреЛрдЧ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдЧреЛ 2 рдХреЗ рд▓рд┐рдП рднреА рд╕рдореНрдореЛрд╣рдХ рддрд░реНрдХ рдирд╣реАрдВ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдБред рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдБ рдХрд┐ рд╡реЗ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗред рд▓реЗрдХрд┐рди рдЧреЛ рднрд╛рд╖рд╛ рдХрд╛ рдПрдХ рд▓рдХреНрд╖реНрдп рднрд╛рд╖рд╛ рдХреА рд╕рд░рд▓рддрд╛ рд╣реИред рдХрд┐рд╕реА рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдЙрдкрдпреЛрдЧреА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ; рд╕рднреА рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЙрдкрдпреЛрдЧреА рд╣реИрдВ--рдпрджрд┐ рд╡реЗ рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реЛрддреАрдВ, рддреЛ рдХреЛрдИ рднреА рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ред рдЧреЛ рдореЗрдВ рдПрдХ рдлреАрдЪрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдлреАрдЪрд░ рдХреЛ рднрд╛рд╖рд╛ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд╛рдпрдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рдореНрдореЛрд╣рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рд╕рдмрд╕реЗ рд╕рдореНрдореЛрд╣рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛрдб рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рдлреАрдЪрд░ рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдЕрдм рдмрд┐рдирд╛ рдмрдбрд╝реА рдЕрдЬреАрдмрддрд╛ рдХреЗред

рдореБрдЭреЗ рдЧреЛ рдореЗрдВ рдПрдирдо рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред рдореИрдВ рд▓рдЧрд╛рддрд╛рд░ рдЕрдкрдиреЗ рдЙрдЬрд╛рдЧрд░ рдПрдкреАрдЖрдИ (рдпрд╛ рдореЗрд░реЗ рдРрдк рдХреЗ рдмрд╛рд╣рд░ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛) рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬрд┐рд╕рдореЗрдВ рд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╡реИрдз рдЗрдирдкреБрдЯ рд╣реИрдВред рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рдПрдХ рдПрдирдо рдХреЗ рд▓рд┐рдП рдПрдХрджрдо рд╕рд╣реА рдЬрдЧрд╣ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдРрдк рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдЖрд░рдкреАрд╕реА рд╕реНрдЯрд╛рдЗрд▓ рдПрдкреАрдЖрдИ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рдХреНрд░рд┐рдпрд╛рдУрдВ/рдСрдкрдХреЛрдб рдХрд╛ рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП const s рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХреЛ (рд╕реНрд╡рдпрдВ рд╢рд╛рдорд┐рд▓!) рд╕рд┐рд░реНрдл рдПрдХ рдЕрдорд╛рдиреНрдп рдХреЛрдб рднреЗрдЬрдиреЗ рд╕реЗ рдХреЛрдИ рд░реЛрдХ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИред

рджреВрд╕рд░реА рддрд░рдл, рдЕрдЧрд░ рдореИрдВ рдЙрд╕реА рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░ рд╕рд╛рдЗрдб рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ рдПрдирдо рдкрд░ рдПрдХ рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рдЬреЛ рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рдПрд░рд░ (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ go vet ) рдХреЛ рдлреЗрдВрдХ рджреЗрдЧрд╛ред default: рдореМрдЬреВрдж рд╣реИ)ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ (рдПрдирдореНрд╕) рдПрдХ рдРрд╕рд╛ рдХреНрд╖реЗрддреНрд░ рд╣реИ рдЬрд╣рд╛рдВ рд╕реНрд╡рд┐рдлреНрдЯ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд╣реА рд╣реИ ред

рдореИрдВ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ рдРрдк рдмрдирд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдЖрд░рдкреАрд╕реА рд╕реНрдЯрд╛рдЗрд▓ рдПрдкреАрдЖрдИ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рдХреНрд░рд┐рдпрд╛рдУрдВ/рдСрдкрдХреЛрдб рдХрд╛ рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕реЗрдЯ рд╣реЛрддрд╛ рд╣реИред рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХреЛ рднреА (рд╕реНрд╡рдпрдВ рд╢рд╛рдорд┐рд▓!) рдХреЛ рдХреЗрд╡рд▓ рдПрдХ рдЕрдорд╛рдиреНрдп рдХреЛрдб рднреЗрдЬрдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред

рдпрд╣ Enums рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рднрдпрд╛рдирдХ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реЛрдЧрд╛ рдХрд┐ рдЕрдм рдЖрдк рдХрднреА рднреА рдПрдХ рдирдпрд╛ рдПрдирдо рдорд╛рди рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдЪрд╛рдирдХ рдЖрд░рдкреАрд╕реА рд╡рд┐рдлрд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЖрдкрдХрд╛ рдбреЗрдЯрд╛ рд░реЛрд▓рдмреИрдХ рдкрд░ рдЕрдкрдардиреАрдп рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдкреНрд░реЛрдЯреЛ 3 рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЙрддреНрдкрдиреНрди рдПрдирдо -рдХреЛрдб "рдЕрдЬреНрдЮрд╛рдд рдХреЛрдб" рдорд╛рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдпрд╣ рджрд░реНрдж рд╕реЗ рд╕реАрдЦрд╛ рдЧрдпрд╛ рдПрдХ рд╕рдмрдХ рд╣реИ (рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдкреНрд░реЛрдЯреЛ 2 рдиреЗ рдЗрд╕реЗ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛, рдЬреЛ рдмреЗрд╣рддрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдмрд╣реБрдд рдЦрд░рд╛рдм рд╣реИ)ред рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЖрд╡реЗрджрди рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рдЗрдирд╛рдпрдд рд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛред

@Merovius рдореИрдВ рдЖрдкрдХреА рд░рд╛рдп рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рдирдореНрд░рддрд╛ рд╕реЗ рдЕрд╕рд╣рдордд рд╣реВрдВред рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдХрд┐ рдХреЗрд╡рд▓ рдорд╛рдиреНрдп рдорд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдирдо рдХреЗ рдкреНрд░рд╛рдердорд┐рдХ рдЙрдкрдпреЛрдЧреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред

Enums рд╣рд░ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдХреБрдЫ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рд╣реИрдВ! рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЙрдЪрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рддреНрд░реБрдЯрд┐ рдкреНрд░рдмрдВрдзрди рдирдП рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдмрд╛рд╣рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╣-рдУрд╣ рд░рд╛рдЬреНрдп рд╣реЛрдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЬрд░реВрд░реА рд╣реИред

Enums (рдпрд╛ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рдЙрдкрдпреЛрдЧреА рдпреЛрдЧ рдкреНрд░рдХрд╛рд░) рдХреЗ рд╕рд╛рде рдЖрдк рдпреЛрдЧ/рдПрдирдо рдореЗрдВ рдПрдХ рд╕реНрдкрд╖реНрдЯ "рдЕрдЬреНрдЮрд╛рдд" рдХреЛрдб рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рд╕рдВрдХрд▓рдХ рдЖрдкрдХреЛ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ (рдпрд╛ рдХреЗрд╡рд▓ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреЛ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╛рд▓ рд▓реЗрдВ рдпрджрд┐ рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рд╣реИ рдЗрд╕реЗ рд▓реЙрдЧ рдХрд░реЗрдВ рдФрд░ рдЕрдЧрд▓реЗ рдЕрдиреБрд░реЛрдз рдкрд░ рдЖрдЧреЗ рдмрдврд╝реЗрдВ)ред

рдореБрдЭреЗ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрдВрджрд░ рдпреЛрдЧ рдкреНрд░рдХрд╛рд░ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд▓рдЧрддреЗ рд╣реИрдВ рдЬрдм рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдПрдХреНрд╕ рдорд╛рдорд▓реЗ рд╣реИрдВ рдЬреЛ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реЛрдЧрд╛ред рдЫреЛрдЯреЗ рдПрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди, рдмрдбрд╝реЗ рдПрдХреНрд╕ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕рдВрдХрд▓рдХ рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдореБрдЭ рдкрд░ рдЪрд┐рд▓реНрд▓рд╛рддрд╛ рд╣реИ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧред

рдПрдкреАрдЖрдИ рд╕реАрдорд╛рдУрдВ рдХреЗ рдкрд╛рд░ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХрдо рд╣реИрдВ, рдФрд░ рдХрд┐рд╕реА рдХреЛ рд╣рдореЗрд╢рд╛ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдЧрд▓рддреА рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреБрдЫ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХреНрд╕ рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдПрдПрд╕рдЯреА рдпрд╛ рдЕрдзрд┐рдХ рдЫреЛрдЯреЗ рдЙрджрд╛рд╣рд░рдг рдЬреИрд╕реЗ "рджрд┐рди рдХрд╛ рджрд┐рди рдж рд╡реАрдХ" рд╡реИрд▓реНрдпреВ рдЬрд╣рд╛рдВ рд░реЗрдВрдЬ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реИ (рдХреИрд▓реЗрдВрдбрд░рд┐рдХрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреА рдкрд╕рдВрдж рддрдХ)ред

@jimmyfrasche рдореИрдВ рдЖрдкрдХреЛ рд╕рдкреНрддрд╛рд╣ рдХрд╛ рджрд┐рди рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдПрдПрд╕рдЯреА рдирд╣реАрдВред рд╡реНрдпрд╛рдХрд░рдг рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддреЗ рд╣реИрдВред рдЖрдЬ рдЬреЛ рдЕрдорд╛рдиреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд╡рд╣ рдХрд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд╛рдиреНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдПрдПрд╕рдЯреА рдореЗрдВ рдирдП рдиреЛрдб-рдкреНрд░рдХрд╛рд░ рдЬреЛрдбрд╝рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдХрдВрдкрд╛рдЗрд▓рд░-рдЪреЗрдХ рдХрд┐рдП рдЧрдП рдпреЛрдЧ-рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде, рдпрд╣ рдЯреВрдЯ-рдлреВрдЯ рдХреЗ рдмрд┐рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдФрд░ рдореИрдВ рдпрд╣ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдЗрд╕реЗ рд╕рд┐рд░реНрдл рдПрдХ рдкрд╢реБ рдЪрд┐рдХрд┐рддреНрд╕рдХ рджреНрд╡рд╛рд░рд╛ рдХреНрдпреЛрдВ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рдЖрдкрдХреЛ рд╕рдВрдкреВрд░реНрдг рдорд╛рдорд▓реЛрдВ рдХреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╕реНрдереИрддрд┐рдХ рдЬрд╛рдБрдЪ рджреЗрдирд╛ рдФрд░ рдореБрдЭреЗ рдХреНрд░рдорд┐рдХ рдорд░рдореНрдордд рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рджреЗрдирд╛ред

рдореИрдВ рдПрдХ рд╕рд░реНрд╡рд░ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд░рд╣рд╛ рд╣реВрдВред рдХреБрдЫ рддрд░реНрдХ рдФрд░ рд╡рд╛рдкрд╕реА рдореВрд▓реНрдп рдПрдкреАрдЖрдИ рдореЗрдВ рдПрдирдо рд╣реИрдВред рдХреБрд▓ 45 рдПрдирдо рдкреНрд░рдХрд╛рд░ рд╣реИрдВред

рдЧреЛ рдореЗрдВ рдПрдиреНрдпреВрдорд░реЗрдЯреЗрдб рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдПрдирдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдХреБрдЫ рдорд╛рди рд╕рдорд╛рди рдирд╛рдо рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, Destroy рджреЛ рдмрд╛рд░ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рд╕рдВрдХрд▓рдХ рддреНрд░реБрдЯрд┐ Destroy redeclared in this block рдЬрд╛рд░реА рдХрд░реЗрдЧрд╛ред

type TaskAllowedOperations int
const (
    _ TaskAllowedOperations = iota
    Cancel
    Destroy
)

type OnNormalExit int
const (
    _ OnNormalExit = iota
    Destroy
    Restart
)

рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдПрдХ рдЕрд▓рдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдПрдХ рдЬреЛ рдПрдХ рдЖрдИрдбреАрдИ рдХреЛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╛рд╡рд┐рдд рдорд╛рди рджрд┐рдЦрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╣реЛред рдЧреЛ рдореЗрдВ рдкреНрд░рдердо рд╢реНрд░реЗрдгреА рдХреЗ рдирд╛рдЧрд░рд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдирдо рд╣реЛрдиреЗ рд╕реЗ рд╡рд╣ рд╕рдВрддреБрд╖реНрдЯ рд╣реЛрдЧрд╛ред

@kongslund рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЕрднреА рдПрдХ рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдмрдирд╛рдпрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рд░реБрдЪрд┐рдХрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдЖрдк рдЯрд╛рдЗрдк рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рдХреЗ рдКрдкрд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдореЗрдВ рдЕрдкрдирд╛ рдПрдирдо рдШреЛрд╖рд┐рдд рдХрд░реЗрдВ рдФрд░ рдмрд╛рдХреА рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВред

// ENUM(_, Cancel, Destroy)
type TaskAllowedOperations int

// ENUM(_, Destroy, Restart)
type OnNormalExit int

рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛

const(
  _ TaskAllowedOperations = iota
  TaskAllowedOperationsCancel
  TaskAllowedOperationsDestroy
)

const(
  _ OnNormalExit = iota
  OnNormalExitDestroy
  OnNormalExitRestart
)

рдмреЗрд╣рддрд░ рд╣рд┐рд╕реНрд╕рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ String() рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ рдЬреЛ рдЙрдирдореЗрдВ рдЙрдкрд╕рд░реНрдЧ рдХреЛ рдмрд╛рд╣рд░ рдХрд░ рджреЗрдЧрд╛, рдЬрд┐рд╕рд╕реЗ рдЖрдк "Destroy" рдХреЛ TaskAllowedOperations рдпрд╛ OnNormalExit $ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд░реНрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

https://github.com/abice/go-enum

рдЕрдм рдЬрдм рдкреНрд▓рдЧ рд░рд╛рд╕реНрддреЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЧрдпрд╛ рд╣реИ ...

рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдирдо рдХреЛ рдЧреЛ рднрд╛рд╖рд╛ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЗ рдкреНрд░рддрд┐ рдореЗрд░реА рдореВрд▓ рднрд╛рд╡рдирд╛ рдирд╣реАрдВ рдереАред рдЬрдм рдореИрдВ рдкрд╣рд▓реА рдмрд╛рд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдпрд╛ рддреЛ рдореБрдЭреЗ рдЕрдХреНрд╕рд░ рднреНрд░рдорд┐рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╣реЛрддреА рдереА рдХрд┐ рдЗрддрдиреЗ рд╕рд╛рд░реЗ рд╡рд┐рдХрд▓реНрдк рдХреНрдпреЛрдВ рдмрдирд╛рдП рдЧрдП рдереЗред рд▓реЗрдХрд┐рди рднрд╛рд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрд╕ рд╕рд░рд▓рддрд╛ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╡рд╣ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдХреБрдЫ рдЕрддрд┐рд░рд┐рдХреНрдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╕рдВрднрд╛рд╡рдирд╛ рдЕрдЪреНрдЫреА рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдФрд░ рдХреЛ рднреА рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЙрд╕ рд╡рд┐рд╢реЗрд╖ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рдорджрдж рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд╛рдирджрд╛рд░ рдкреИрдХреЗрдЬ рдмрдирд╛рдпрд╛ рд╣реИред рдХреНрд░реБрдлреНрдЯ рдХреА рд░рд╛рд╢рд┐ рдХреЛ рдореЗрд░реЗ рд╡рд┐рд╡реЗрдХ рдкрд░ рд░рдЦрддреЗ рд╣реБрдПред

рдЗрд╕ рдЪрд░реНрдЪрд╛ рдореЗрдВ рдХрдИ рд╡реИрдз рдмрд┐рдВрджреБ рдЙрдард╛рдП рдЧрдП рд╣реИрдВ, рдХреБрдЫ рдПрдирдо рд╕рдорд░реНрдерди рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реИрдВ рдФрд░ рдХрдИ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рднреА рд╣реИрдВ (рдХрдо рд╕реЗ рдХрдо рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдкреНрд░рд╕реНрддрд╛рд╡ рдиреЗ "рдПрдирдореНрд╕" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдХрд╣рд╛ рд╣реИ)ред рдХреБрдЫ рдЪреАрдЬреЗрдВ рдЬреЛ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЯрдХ рдЧрдИрдВ:

  • рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рдЙрджрд╛рд╣рд░рдг (рдПрдирдореНрд╕ рдЗрди рдЧреЛ рдЯреБрдбреЗ) рднреНрд░рд╛рдордХ рд╣реИ: рд╡рд╣ рдХреЛрдб рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд▓рдЧрднрдЧ рдХреЛрдИ рднреА рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЧреЛ рдХреЛрдб рдХреЛ рд╣рд╛рде рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦреЗрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕реБрдЭрд╛рд╡ (рднрд╛рд╖рд╛ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ) рдЧреЛ рдореЗрдВ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд╣реИред

  • @jediorange рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИ рдХрд┐ рд╕реНрд╡рд┐рдлреНрдЯ "рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ (enums) рд╕рд╣реА рд╣реИ": рдЬреИрд╕рд╛ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрд╡рд┐рдлреНрдЯ рдПрдирдо рдПрдХ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рдЬрд╛рдирд╡рд░ рд╣реИрдВ, рдЬреЛ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рдПрдХ рд╕рд╛рде рдорд┐рд▓рд╛рддреЗ рд╣реИрдВред рдЧреЛ рдореЗрдВ рд╣рдордиреЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рдРрд╕реЗ рддрдВрддреНрд░реЛрдВ рд╕реЗ рдкрд░рд╣реЗрдЬ рдХрд┐рдпрд╛ рдЬреЛ рдЕрдиреНрдп рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдУрд╡рд░рд▓реИрдк рдХрд░рддреЗ рдереЗ рдФрд░ рдмрджрд▓реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдСрд░реНрдереЛрдЧреЛрдиреИрд▓рд┐рдЯреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рдереЗред рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдгрд╛рдо рдпрд╣ рд╣реИ рдХрд┐ рдЙрд╕реЗ рдпрд╣ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ: рдПрдХ рдПрдирдо рдпрд╛ рдПрдХ рд╡рд░реНрдЧ, рдпрд╛ рдПрдХ рдпреЛрдЧ рдкреНрд░рдХрд╛рд░ (рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдерд╛), рдпрд╛ рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ред

  • рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ @ianlancetaylor рдХреА рдмрд╛рдд рдХреЛ рд╣рд▓реНрдХреЗ рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрдкрдпреЛрдЧреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдПрдХ рдЧрдЬрд┐рдпрди рд╣реИ; рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдореНрдореЛрд╣рдХ рд╣реИрдВ рдФрд░ рдЙрдирдХреА рд▓рд╛рдЧрдд рдХреЗ рд▓рд╛рдпрдХ рд╣реИрдВ (рднрд╛рд╖рд╛ рдХреА рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдкрдардиреАрдпрддрд╛, рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди)ред

  • рдПрдХ рдорд╛рдореВрд▓реА рдмрд┐рдВрджреБ рдХреЗ рд░реВрдк рдореЗрдВ, рдЧреЛ рдореЗрдВ рдХреЛрдЯрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрдирдЯреНрд╕ рддрдХ рд╣реА рд╕реАрдорд┐рдд рдирд╣реАрдВ рд╣реИрдВред рдЬрдм рддрдХ рд╡реЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИрдВ рддрдм рддрдХ рд╡реЗ (рд╕рдВрднрд╡рддрдГ рдирд╛рдорд┐рдд) рдореВрд▓ рдкреНрд░рдХрд╛рд░реЛрдВ (рдлреНрд▓реЛрдЯреНрд╕, рдмреВрд▓рд┐рдпрдиреНрд╕, рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕: https://play.golang.org/p/lhd3jqqg5z) рддрдХ рд╕реАрдорд┐рдд рд╣реИрдВред

  • @merovius (рд╕реНрдерд┐рд░!) рд╕рдВрдХрд▓рди-рд╕рдордп рдЬрд╛рдВрдЪ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЪреНрдЫреЗ рдЕрдВрдХ рдмрдирд╛рддрд╛ рд╣реИред рдореБрдЭреЗ рдмрд╣реБрдд рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЬрд┐рди рдЧрдгрдирд╛рдУрдВ рдХреЛ рдмрдврд╝рд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╡реЗ рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреБрдХреНрдд рд╣реИрдВ рдЬрд╣рд╛рдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд╛рдВрдЫрдиреАрдп рдпрд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рд╣реИ (рдХреЛрдИ рднреА рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд░рд╣рдиреЗ рд╡рд╛рд▓реА рдПрдкреАрдЖрдИ рд╕рддрд╣ рд╕рдордп рдХреЗ рд╕рд╛рде рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддреА рд╣реИ)ред

рдЗрд╕рд╕реЗ рдореБрдЭреЗ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдкреНрд░рд╢реНрди рдорд┐рд▓рддреЗ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд╕рд╛рд░реНрдердХ рдкреНрд░рдЧрддрд┐ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

1) рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдПрдирдореЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдкреЗрдХреНрд╖рд╛рдПрдБ рдХреНрдпрд╛ рд╣реИрдВ? @bep рдореЗрдВ рдЧрдгрдирд╢реАрд▓рддрд╛, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЕрднреНрдпрд╛рд╡реЗрджрди, рдкрд╣рдЪрд╛рди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИред рдХреНрдпрд╛ рдпрд╣рд╛рдВ рдФрд░ рд╣реИ? рдХрдо рд╣реИ?

2) рд╕реВрдЪреА рдХреЛ 1 рдореЗрдВ рдорд╛рдирддреЗ рд╣реБрдП), рдХреНрдпрд╛ рдПрдирдореЛрдВ рдХреЛ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдХреИрд╕реЗ? (рдЙрд╕реА рдкреИрдХреЗрдЬ рдореЗрдВ? рджреВрд╕рд░рд╛ рдкреИрдХреЗрдЬ?) рдЕрдЧрд░ рдЙрдиреНрд╣реЗрдВ рдмрдврд╝рд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛, рддреЛ рдХреНрдпреЛрдВ рдирд╣реАрдВ? рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ?

3) рдиреЗрдорд╕реНрдкреЗрд╕: рд╕реНрд╡рд┐рдлреНрдЯ рдореЗрдВ, рдПрдХ рдПрдирдо рдкреНрд░рдХрд╛рд░ рдПрдХ рдирдпрд╛ рдиреЗрдорд╕реНрдкреЗрд╕ рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИред рдорд╣рддреНрд╡рдкреВрд░реНрдг рдорд╢реАрдирд░реА (рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЪреАрдиреА, рдкреНрд░рдХрд╛рд░ рдХрдЯреМрддреА) рд╣реИ рдХрд┐ рдирд╛рдорд╕реНрдерд╛рди рдирд╛рдо рдХреЛ рд╣рд░ рдЬрдЧрд╣ рджреЛрд╣рд░рд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдПрдирдо рдорд╣реАрдиреЗ рдХреЗ рдПрдирдо рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рд╕рд╣реА рд╕рдВрджрд░реНрдн рдореЗрдВ, рдХреЛрдИ рднреА рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИред рдорд╣реАрдирд╛ рдХреЗ рдмрдЬрд╛рдп рдЬрдирд╡рд░реАред рдЬрдирд╡рд░реА (рдпрд╛ рдЗрд╕рд╕реЗ рднреА рдмрджрддрд░, MyPackage.Month.Janary)ред рдХреНрдпрд╛ рдПрдХ рдПрдирдо рдиреЗрдорд╕реНрдкреЗрд╕ рдХреА рдЬрд░реВрд░рдд рд╣реИ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдПрдХ рдПрдирдо рдиреЗрдорд╕реНрдкреЗрд╕ рдХреИрд╕реЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рд╢рд░реНрдХрд░рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

4) рдХреНрдпрд╛ рдПрдирдо рдорд╛рди рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИрдВ? рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдореВрд▓реНрдп?

5) рдПрдирдо рд╡реИрд▓реНрдпреВ рдкрд░ рдХрд┐рд╕ рддрд░рд╣ рдХреЗ рдСрдкрд░реЗрд╢рди рд╕рдВрднрд╡ рд╣реИрдВ (рдЬреИрд╕реЗ, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рдЕрд▓рд╛рд╡рд╛): рдХреНрдпрд╛ рдореИрдВ рдПрдХ рдХреЛ рдЖрдЧреЗ, рдПрдХ рдХреЛ рдкреАрдЫреЗ рдХреА рдУрд░ рд▓реЗ рдЬрд╛ рд╕рдХрддрд╛ рд╣реВрдВ? рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдпрд╛ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? (рд╕рднреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпрд╛рдВ рдХреНрд░рдо рдореЗрдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ)ред рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдХреЛрдИ рдЕрдВрддрд┐рдо рдПрдирдо рдореВрд▓реНрдп рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рд░рдирдЯрд╛рдЗрдо рддреНрд░реБрдЯрд┐ рд╣реИ?

(рдореИрдВрдиреЗ https://github.com/golang/go/issues/19814#issuecomment-322771922 рдореЗрдВ рдЕрдЧрд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЗ рдЕрдкрдиреЗ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдХреЛ рд╕рд╣реА рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╢рдмреНрджреЛрдВ рдХреЗ рд▓рд╛рдкрд░рд╡рд╛рд╣ рдЪрдпрди рдХреЗ рд▓рд┐рдП рдЦреЗрдж рд╣реИред)

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрди рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд┐рдП рдмрд┐рдирд╛ рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ рдирд┐рд░рд░реНрдердХ рд╣реИ ("рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдПрдирдо рдЬреЛ рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд╡рд╣ рдХрд░реЗрдВ" рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡ рдирд╣реАрдВ рд╣реИ)ред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрди рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд┐рдП рдмрд┐рдирд╛ рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ рдирд┐рд░рд░реНрдердХ рд╣реИ

@griesemer рдЖрдкрдХреЗ рдкрд╛рд╕ рдмрд┐рдВрджреБрдУрдВ/рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╕реЗрдЯ рд╣реИ - рд▓реЗрдХрд┐рди рдЗрди рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рди рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рдЕрд░реНрдерд╣реАрди рд▓реЗрдмрд▓ рдХрд░рдирд╛ рдереЛрдбрд╝рд╛ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХреЗ рд▓рд┐рдП рдмрд╛рд░ рдЙрдЪреНрдЪ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХрдВрдкрд╛рдЗрд▓рд░реНрд╕ рдореЗрдВ рдкреАрдПрдЪрдбреА рдХрд┐рдП рдмрд┐рдирд╛ _рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреБрдЫ_ рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рдФрд░ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░_ рдбрд┐рдЬрд╝рд╛рдЗрди рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

  • рдЧреЛ рдХреЛ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреА рдЬрд░реВрд░рдд рдереА рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдиреЗ рдПрдХ рдмрд╣реБрдд рдЬрд░реВрд░реА рдЪрд░реНрдЪрд╛ => рдореВрд▓реНрдп рдФрд░ рдЕрд░реНрде рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛
  • рдпрджрд┐ рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ #21473 => рдореВрд▓реНрдп рдФрд░ рдЕрд░реНрде рдХреА рдУрд░ рднреА рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ

рдкрд░рд┐рдЪрдпрд╛рддреНрдордХ рдЙрджрд╛рд╣рд░рдг (рдПрдирдореНрд╕ рдЗрди рдЧреЛ рдЯреБрдбреЗ) рднреНрд░рд╛рдордХ рд╣реИ: рд╡рд╣ рдХреЛрдб рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд▓рдЧрднрдЧ рдХреЛрдИ рднреА рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЧреЛ рдХреЛрдб рдХреЛ рд╣рд╛рде рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦреЗрдЧрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕реБрдЭрд╛рд╡ (рднрд╛рд╖рд╛ рд╕рдорд░реНрдерди рдХреЗ рд╕рд╛рде рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ) рдЧреЛ рдореЗрдВ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХреЗ рдмрд╣реБрдд рдХрд░реАрдм рд╣реИред

@griesemer рдореБрдЭреЗ рдЕрд╕рд╣рдордд рд╣реЛрдирд╛ рд╣реИред рдореБрдЭреЗ рдЧреЛ рд╡реЗрд░рд┐рдПрдмрд▓ рдирд╛рдо рдореЗрдВ рдкреВрд░реНрдг рдЕрдкрд░рдХреЗрд╕рд┐рдВрдЧ рдирд╣реАрдВ рдЫреЛрдбрд╝рдиреА рдЪрд╛рд╣рд┐рдП рдереА, рд▓реЗрдХрд┐рди рдРрд╕реЗ рдмрд╣реБрдд рд╕реЗ рд╕реНрдерд╛рди рд╣реИрдВ рдЬрд╣рд╛рдВ рд╣рд╕реНрддрд▓рд┐рдЦрд┐рдд рдХреЛрдб рдореЗрд░реЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рд╕рдорд╛рди рджрд┐рдЦрддрд╛ рд╣реИ, рдЬреЛ рдЧреЛрдЧрд▓рд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦреЗ рдЧрдП рд╣реИрдВ рдЬрд┐рдирдХрд╛ рдореИрдВ рдЧреЛ рд╕рдореБрджрд╛рдп рдореЗрдВ рд╕рдореНрдорд╛рди рдХрд░рддрд╛ рд╣реВрдВред рд╣рдо рдЕрдХреНрд╕рд░ рдЕрдкрдиреЗ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рдПрдХ рд╣реА рдкреИрдЯрд░реНрди рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ Google рдХреНрд▓рд╛рдЙрдб рдЧреЛ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

// ACLRole is the level of access to grant.
type ACLRole string

const (
    RoleOwner  ACLRole = "OWNER"
    RoleReader ACLRole = "READER"
    RoleWriter ACLRole = "WRITER"
)

рд╡реЗ рдПрдХ рд╣реА рд░рдЪрдирд╛ рдХрд╛ рдкреНрд░рдпреЛрдЧ рдЕрдиреЗрдХ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдХрд░рддреЗ рд╣реИрдВред
https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/bigquery/table.go#L78 -L116
https://github.com/GoogleCloudPlatform/google-cloud-go/blob/master/storage/acl.go#L27 -L49

рдмрд╛рдж рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдЪрд░реНрдЪрд╛ рд╣реБрдИ рдХрд┐ рдпрджрд┐ рдЖрдк iota рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдареАрдХ рд╣реИрдВ рддреЛ рдЖрдк рдЪреАрдЬреЛрдВ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХреИрд╕реЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реАрдорд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдПред рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдкрд┐рдЫрд▓реА рдЯрд┐рдкреНрдкрдгреА рджреЗрдЦреЗрдВред https://github.com/golang/go/issues/19814#issuecomment -290948187

@bep рдлреЗрдпрд░ рдкреЙрдЗрдВрдЯ; рд╢рдмреНрджреЛрдВ рдХреЗ рдЕрдкрдиреЗ рд▓рд╛рдкрд░рд╡рд╛рд╣ рдЪреБрдирд╛рд╡ рдХреЗ рд▓рд┐рдП рдореИрдВ рдХреНрд╖рдорд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБред рдореБрдЭреЗ рдлрд┐рд░ рд╕реЗ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рджреЗрдВ, рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рдмрд╛рд░ рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕рдореНрдорд╛рдирдкреВрд░реНрд╡рдХ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд╛рдХреНрдпрд╛рдВрд╢рд┐рдд рдХрд░реЗрдВ:

рд╕рд╛рд░реНрдердХ рдкреНрд░рдЧрддрд┐ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрд╣реИ рдХрд┐ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд╕рдорд░реНрдердХреЛрдВ рдХреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдФрд░ рд╕рдЯреАрдХ рд╣реЛрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╡реЗ рдХреНрдпрд╛ рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдПрдирдо рдХреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП https://github рдореЗрдВ рдХреБрдЫ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджреЗрдХрд░ред com/golang/go/issues/19814#issuecomment-322752526)ред рдЪрд░реНрдЪрд╛ рд╕реЗ рдЕрдм рддрдХ рд╡рд╛рдВрдЫрд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдХреЗрд╡рд▓ рдХрд╛рдлреА рдЕрд╕реНрдкрд╖реНрдЯ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рдХрджрдо рдХреЗ рд░реВрдк рдореЗрдВ, рдХреЗрд╕ рд╕реНрдЯрдбреАрдЬ рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдореМрдЬреВрджрд╛ рдЧреЛ рдХреИрд╕реЗ рдЧрд┐рд░рддрд╛ рд╣реИ (рдХрд╛рдлреА) рдЫреЛрдЯрд╛ рд╣реИ рдФрд░ рдХреИрд╕реЗ рдПрдирдореНрд╕ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рдмреЗрд╣рддрд░/рддреЗрдЬ/рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╣рд▓ рдХрд░реЗрдЧрд╛, рдЖрджрд┐ред рдЧреЛрдлрд░рдХреЙрди рдкрд░ @rsc рдХреА рдЙрддреНрдХреГрд╖реНрдЯ рдмрд╛рддрдЪреАрдд рднреА рджреЗрдЦреЗрдВ Go2 рднрд╛рд╖рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВред

@derekperkins рдореИрдВ рдЙрди (рдЯрд╛рдЗрдк рдХреА рдЧрдИ) рдирд┐рд░рдВрддрд░ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреЛ рдмреБрд▓рд╛рдКрдВрдЧрд╛, рди рдХрд┐ рдПрдирдоред рдореИрдВ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╣рдорд╛рд░реА рдЕрд╕рд╣рдорддрд┐ рдПрдХ "рдПрдирдо" рдХреА рдПрдХ рдЕрд▓рдЧ рд╕рдордЭ рдХреЗ рдХрд╛рд░рдг рд╣реИ, рдЗрд╕рд▓рд┐рдП рдКрдкрд░ рдореЗрд░реЗ рдкреНрд░рд╢реНрди рд╣реИрдВред

(рдореЗрд░рд╛ рдкрд┐рдЫрд▓рд╛ https://github.com/golang/go/issues/19814#issuecomment-322774830 рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ @derekperkins рдХреЛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛, @ derekparker рдХреЛ рдирд╣реАрдВред рд╕реНрд╡рддрдГ рдкреВрд░реНрдг рдиреЗ рдореБрдЭреЗ рд╣рд░рд╛ рджрд┐рдпрд╛ред)

@derekperkins рдЯрд┐рдкреНрдкрдгреА рд╕реЗ рджреЗрдЦрддреЗ рд╣реБрдП, рдФрд░ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдореЗрд░реЗ рдЕрдкрдиреЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрддреНрддрд░ рджреЗрддреЗ рд╣реБрдП, рдореИрдВ рдЗрдХрдЯреНрдард╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдПрдХ рдЧреЛ "рдПрдирдо" рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреБрдг рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП:

  • рдПрдХ (рдирдП) рдкреНрд░рдХрд╛рд░ рдХреЗ рддрд╣рдд рдореВрд▓реНрдпреЛрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЛ рд╕рдореВрд╣рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛
  • рдиреНрдпреВрдирддрдо рд╡рд╛рдХреНрдп-рд╡рд┐рдиреНрдпрд╛рд╕ рдУрд╡рд░рд╣реЗрдб рдпрд╛ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдо (рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд рдорд╛рди, рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рдШреЛрд╖рд┐рдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рдПрдВ
  • рдЖрд░реЛрд╣реА рдШреЛрд╖рдгрд╛ рдХреНрд░рдо рдореЗрдВ рдЗрди рдореВрд▓реНрдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛

рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рд▓рдЧрддрд╛ рд╣реИ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдЗрд╕ рд╕реВрдЪреА рдореЗрдВ рдФрд░ рдХреНрдпрд╛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

рдЖрдкрдХреЗ рд╕рднреА рдкреНрд░рд╢реНрди рдЕрдЪреНрдЫреЗ рд╣реИрдВред

рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХреЗ рд░реВрдк рдореЗрдВ рдПрдирдо рдХреЗ рд▓рд┐рдП рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдкреЗрдХреНрд╖рд╛рдПрдВ рдХреНрдпрд╛ рд╣реИрдВ? @bep рдореЗрдВ рдЧрдгрдирд╢реАрд▓рддрд╛, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐, рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЕрднреНрдпрд╛рд╡реЗрджрди, рдкрд╣рдЪрд╛рди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИред рдХреНрдпрд╛ рдпрд╣рд╛рдВ рдФрд░ рд╣реИ? рдХрдо рд╣реИ?

рд╕реВрдЪреА рдХреЛ 1 рдореЗрдВ рдорд╛рдирддреЗ рд╣реБрдП), рдХреНрдпрд╛ рдПрдирдореЛрдВ рдХреЛ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдХреИрд╕реЗ? (рдЙрд╕реА рдкреИрдХреЗрдЬ рдореЗрдВ? рджреВрд╕рд░рд╛ рдкреИрдХреЗрдЬ?) рдЕрдЧрд░ рдЙрдиреНрд╣реЗрдВ рдмрдврд╝рд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддрд╛, рддреЛ рдХреНрдпреЛрдВ рдирд╣реАрдВ? рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ?

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рджреЛ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдПрдирдореЛрдВ рдХреЛ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

  1. Enums рдХреЛ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдореВрд▓реНрдпреЛрдВ рдХреА рдкреВрд░реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред
  2. рдЬреИрд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдЧреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдмрд╛рд╣рд░реА рдкреИрдХреЗрдЬреЛрдВ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рд╕рдорд╛рди рдпрд╛рдВрддреНрд░рд┐рдХреА рдФрд░ рдбреЗрд╡рд▓рдкрд░ рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреЛ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИ

рдиреЗрдорд╕реНрдкреЗрд╕: рд╕реНрд╡рд┐рдлреНрдЯ рдореЗрдВ, рдПрдХ рдПрдирдо рдкреНрд░рдХрд╛рд░ рдПрдХ рдирдпрд╛ рдирд╛рдорд╕реНрдерд╛рди рдкреЗрд╢ рдХрд░рддрд╛ рд╣реИред рдорд╣рддреНрд╡рдкреВрд░реНрдг рдорд╢реАрдирд░реА (рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЪреАрдиреА, рдкреНрд░рдХрд╛рд░ рдХрдЯреМрддреА) рд╣реИ рдХрд┐ рдирд╛рдорд╕реНрдерд╛рди рдирд╛рдо рдХреЛ рд╣рд░ рдЬрдЧрд╣ рджреЛрд╣рд░рд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдПрдирдо рдорд╣реАрдиреЗ рдХреЗ рдПрдирдо рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рд╕рд╣реА рд╕рдВрджрд░реНрдн рдореЗрдВ, рдХреЛрдИ рднреА рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИред рдорд╣реАрдирд╛ рдХреЗ рдмрдЬрд╛рдп рдЬрдирд╡рд░реАред рдЬрдирд╡рд░реА (рдпрд╛ рдЗрд╕рд╕реЗ рднреА рдмрджрддрд░, MyPackage.Month.Janary)ред рдХреНрдпрд╛ рдПрдХ рдПрдирдо рдиреЗрдорд╕реНрдкреЗрд╕ рдХреА рдЬрд░реВрд░рдд рд╣реИ? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдПрдХ рдПрдирдо рдиреЗрдорд╕реНрдкреЗрд╕ рдХреИрд╕реЗ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рд╢рд░реНрдХрд░рд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдиреЗрдорд╕реНрдкреЗрд╕рд┐рдВрдЧ рдХреИрд╕реЗ рд╣реБрдИ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд╕рднреА рдЙрджрд╛рд╣рд░рдгреЛрдВ рдореЗрдВ рдЯрд╛рдЗрдк рдирд╛рдо рдХреЗ рд╕рд╛рде рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрдЧрд░ рдХрд┐рд╕реА рдиреЗ рдиреЗрдорд╕реНрдкреЗрд╕рд┐рдВрдЧ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рддреЛ рдореЗрд░рд╛ рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИред рдЙрдкрд╕рд░реНрдЧ рд╡рд░реНрддрдорд╛рди рдкреНрд░рдгрд╛рд▓реА рдореЗрдВ рдареАрдХ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред

рдХреНрдпрд╛ рдПрдирдо рдорд╛рди рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИрдВ? рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдореВрд▓реНрдп?

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдерд┐рд░рд╛рдВрдХред

рдПрдирдо рдореВрд▓реНрдпреЛрдВ рдкрд░ рдХрд┐рд╕ рддрд░рд╣ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рд╕рдВрднрд╡ рд╣реИрдВ (рдХрд╣рддреЗ рд╣реИрдВ, рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рдЕрд▓рд╛рд╡рд╛): рдХреНрдпрд╛ рдореИрдВ рдПрдХ рдХреЛ рдЖрдЧреЗ, рдПрдХ рдХреЛ рдкреАрдЫреЗ рдХреА рдУрд░ рд▓реЗ рдЬрд╛ рд╕рдХрддрд╛ рд╣реВрдВ? рдХреНрдпрд╛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдпрд╛ рдСрдкрд░реЗрдЯрд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ? (рд╕рднреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпрд╛рдВ рдХреНрд░рдо рдореЗрдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ)ред рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдХреЛрдИ рдЕрдВрддрд┐рдо рдПрдирдо рдореВрд▓реНрдп рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рддрд╛ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рд░рдирдЯрд╛рдЗрдо рддреНрд░реБрдЯрд┐ рд╣реИ?

рдореИрдВ рд╕реНрд▓рд╛рдЗрд╕/рд╕рд░рдгрд┐рдпреЛрдВ (рдирдХреНрд╢реЗ рдирд╣реАрдВ) рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдЧреЛ рдкреНрд░рдерд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛрдЧрд╛ред рдШреЛрд╖рдгрд╛ рдЖрджреЗрд╢ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ Enum рдорд╛рди рдЪрд▓рдиреЗ рдпреЛрдЧреНрдп рд╣реЛрдВрдЧреЗред рдХрдо рд╕реЗ рдХрдо рд░реЗрдВрдЬ рд╕рдкреЛрд░реНрдЯ рддреЛ рд╣реЛрдЧрд╛ рд╣реАред рдореИрдВ рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдирдо рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рджреЗрдиреЗ рд╕реЗ рджреВрд░ рдЭреБрдХ рдЬрд╛рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рджреГрдврд╝рддрд╛ рд╕реЗ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ред рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рд╕рдВрднрд╛рд╡рд┐рдд рд░рдирдЯрд╛рдЗрдо рддреНрд░реБрдЯрд┐ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдПрдХ рдПрдирдо рдХреЛ рдЕрдорд╛рдиреНрдп рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рдПрдХ рдирдИ рд░рдирдЯрд╛рдЗрдо рддреНрд░реБрдЯрд┐ (рдШрдмрд░рд╛рд╣рдЯ?) рд╣реЛрдЧреА, рдЪрд╛рд╣реЗ рд╡рд╣ рдкреНрд░рддреНрдпрдХреНрд╖ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдпрд╛ рдЯрд╛рдЗрдк рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реЛред

рдпрджрд┐ рдореИрдВ рдЗрд╕реЗ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВ рддреЛ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреА рддрд░рд╣ рд╣реИрдВ (рдФрд░ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреА рддрд░рд╣ рдЙрдирдХреЗ рдкрд╛рд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╕реНрдерд┐рд░ рдорд╛рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ) рд▓реЗрдХрд┐рди:

  • рд╡реЗ рдПрдХ рд╣реА рдШреЛрд╖рдгрд╛ рдореЗрдВ рдПрдирдо рдорд╛рдиреЛрдВ рд╕реЗ рдЬреБрдбрд╝реЗ рдПрдирдо рдкреНрд░рдХрд╛рд░ рдХреЛ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдЕрдиреНрдпрдерд╛ рд╡реЗ рдХреЗрд╡рд▓ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИрдВ)
  • рдЗрд╕рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рдмрд╛рд╣рд░ рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рдПрдирдо рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдирдо рдорд╛рди рдбрд╛рд▓рдирд╛/рдмрдирд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИ
  • рдЙрди рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рд╕рдВрднрд╡ рд╣реИ

рдХреНрдпрд╛ рдпрд╣ рд╕рд╣реА рд▓рдЧ рд░рд╣рд╛ рд╣реИ? (рдпрд╣ рдХреНрд▓рд╛рд╕рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рдПрдЧрд╛, рдЬреЛ рд▓рдЧрднрдЧ 45 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдкрд╛рд╕реНрдХрд▓ рджреНрд╡рд╛рд░рд╛ рдЕрдЧреНрд░рдгреА, рдПрдирдо рдХреА рдУрд░ рд▓реЗ рдЧрдП рдереЗ)ред

рд╣рд╛рдВ, рдареАрдХ рдпрд╣реА рдореИрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рд╕реНрд╡рд┐рдЪ-рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдПрдЖрдИрдпреВрдЖрдИ рдЬреЛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдореБрдЦреНрдп рдЪрд╛рд▓рдХреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред

рдПрдХ рдЧрдгрдирд╛ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдореВрд▓ рд░реВрдк рд╕реЗ рдХреБрдЫ рднреА рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рд╣реИ рдХрд┐ рд╕реНрд╡рд┐рдлреНрдЯ рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рд╣реИрдВ рдпрджрд┐ рдЖрдкрдиреЗ рдЕрдкрдиреЗ рд╕реНрд╡рд┐рдЪ рдореЗрдВ рдПрдирдо рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрддреБрд╖реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдкрд╢реБ рдЪрд┐рдХрд┐рддреНрд╕рдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

@jediorange рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЙрд╕ рдЕрдВрддрд┐рдо рднрд╛рдЧ рдХреЗ рдкреНрд░рд╢реНрди рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣рд╛ рдерд╛, рдХрд┐ рдХреНрдпрд╛ рдПрдХ рдердХрд╛рд╡рдЯ-рдЬрд╛рдВрдЪ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП (рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рдкреВрд░рд╛ рд░рдЦрдиреЗ рдХреЗ рд╣рд┐рдд рдореЗрдВ)ред "рдирд╣реАрдВ", рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдПрдХ рдмрд┐рд▓реНрдХреБрд▓ рдареАрдХ рдЙрддреНрддрд░ рд╣реИред

рдЗрд╕ рдЕрдВрдХ рдХреЗ рдореВрд▓ рд╕рдВрджреЗрд╢ рдореЗрдВ рдкреНрд░реЗрд░рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░реЛрдЯреЛрдмрдлреНрд╕ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рд╣реИред рдореИрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЕрдм рджрд┐рдП рдЧрдП рд╢рдмреНрджрд╛рд░реНрде рдХреЗ рд╕рд╛рде, рдкреНрд░реЛрдЯреЛрдмрдл-рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдХрд┐рд╕реА рднреА рдПрдирдо рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд "рдЕрдкрд░рд┐рдЪрд┐рдд" -рдХреЗрд╕ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рдЯрдХрд░рд╛рд╡реЛрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдирд╛рдо-рдореИрдВрдЧрд▓рд┐рдВрдЧ рдпреЛрдЬрдирд╛ рд▓рд╛рдЧреВ рдХрд░рдирд╛)ред рдпрджрд┐ рдбреАрдХреЛрдбреЗрдб рдПрдирдо-рд╡реИрд▓реНрдпреВ рдХрдВрдкрд╛рдЗрд▓-рдЗрди рд░реЗрдВрдЬ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рддреЛ рдПрдирдо (рдлрд┐рд░ рд╕реЗ, рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рдирд╛рдореЛрдВ рдХреЛ рдЙрд▓рдЭрд╛рдирд╛) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рднреА рдЙрддреНрдкрдиреНрди рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдареАрдХ рд╡реИрд╕реЗ рд╣реА рдЬреИрд╕реЗ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╛, рд╢рд╛рдпрдж рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, int s рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВред

@Merovius рдореЗрд░реЗ рдореВрд▓ рдкреНрд░рд╕реНрддрд╛рд╡ рдиреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░реЛрдЯреЛрдмрдл рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛, рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдкреНрд░рд╛рдердорд┐рдХ рдкреНрд░реЗрд░рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВред рдЖрдк рдЙрд╕ рдПрдХреАрдХрд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрдЪреНрдЫреА рдмрд╛рдд рд╕рд╛рдордиреЗ рд▓рд╛рддреЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рд╢рд╛рдпрдж рдСрд░реНрдереЛрдЧреЛрдирд▓ рдЪрд┐рдВрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЛрдб рдЬреЗрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдкреНрд░реЛрдЯреЛрдмрдл рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рдРрдк рд╕реНрддрд░ рдХреЗ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЯреЛрдмрдл рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рдЬрд╛рд░реА рд░рд╣ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдРрдк рдирд┐рд░реНрдорд╛рддрд╛ рдЙрдиреНрд╣реЗрдВ рдЧреЛ рдПрдирдо рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рд░реВрдкрд╛рдВрддрд░рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВред

@derekperkins рдХреБрдЫ рдФрд░ рдкреНрд░рд╢реНрди:

  • рдПрдирдо рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рдЪрд░ рдХреЗ рд▓рд┐рдП рд╢реВрдиреНрдп рдорд╛рди рдХреНрдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЬреЛ рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрди/рдкреНрд░рд╛рд░рдВрднрд┐рдХрд░рдг рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИ)ред

  • рдХреНрдпрд╛ рд╣рдо рдПрдирдо рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕реАрдорд┐рдд рдЕрдВрдХрдЧрдгрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╛рд╕реНрдХрд▓ рдореЗрдВ (рдЬрд┐рд╕рдореЗрдВ рдореИрдВрдиреЗ рдПрдХ рдмрд╛рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд┐рдпрд╛ рдерд╛, рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╡рд╛рдкрд╕ рдХрдм), рдЪрд░рдгреЛрдВ рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдирд╛ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдерд╛> 1. рдФрд░ рдХрднреА-рдХрднреА рдХреЛрдИ рдПрдирдо рдорд╛рди рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред

  • рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдЧреЛ рдЬрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдкреБрдирд░рд╛рд╡реГрддрд┐ (рдФрд░ рдХрдбрд╝реЗ) рд╕рдорд░реНрдерди рдкрд░реНрдпрд╛рдкреНрдд рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ?

рдПрдирдо рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рдЪрд░ рдХреЗ рд▓рд┐рдП рд╢реВрдиреНрдп рдорд╛рди рдХреНрдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЬреЛ рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрди/рдкреНрд░рд╛рд░рдВрднрд┐рдХрд░рдг рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИ)ред

рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдпрд╣ рдПрдХ рдХрдард┐рди рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдпрджрд┐ рдкрд░рд┐рднрд╛рд╖рд╛ рдЖрджреЗрд╢ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдкрд╣рд▓рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдорд╛рди рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдХреНрдпрд╛ рд╣рдо рдПрдирдо рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕реАрдорд┐рдд рдЕрдВрдХрдЧрдгрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╛рд╕реНрдХрд▓ рдореЗрдВ (рдЬрд┐рд╕рдореЗрдВ рдореИрдВрдиреЗ рдПрдХ рдмрд╛рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд┐рдпрд╛ рдерд╛, рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╡рд╛рдкрд╕ рдХрдм), рдЪрд░рдгреЛрдВ рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдирд╛ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдерд╛> 1. рдФрд░ рдХрднреА-рдХрднреА рдХреЛрдИ рдПрдирдо рдорд╛рди рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред

рдЪрд╛рд╣реЗ рдЖрдк рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЖрдзрд╛рд░рд┐рдд рдПрдирдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реЛрдВ, рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рд╕рднреА рдПрдирдореЛрдВ рдореЗрдВ рдПрдХ рдирд┐рд╣рд┐рдд рд╢реВрдиреНрдп рдЖрдзрд╛рд░рд┐рдд рд╕реВрдЪрдХрд╛рдВрдХ рд╣реИ? рдЬрд┐рд╕ рдХрд╛рд░рдг рдХрд╛ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдерд╛, рдореИрдВ рдХреЗрд╡рд▓ рд╕рдорд░реНрдерд┐рдд range рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдХреА рдУрд░ рдЭреБрдХрддрд╛ рд╣реВрдВ рдФрд░ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдЖрдзрд╛рд░рд┐рдд рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдЙрдЬрд╛рдЧрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдПрдХ рд╕рд░рдгреА рдпрд╛ рдорд╛рдирдЪрд┐рддреНрд░ рдпрд╛ рдЬреЛ рдХреБрдЫ рднреА рдиреАрдЪреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдирдо рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХрд╛рд░рдг рд╣реИрдВ рдХрд┐ рдпрд╣ рдлрд╛рдпрджреЗрдордВрдж рдХреНрдпреЛрдВ рд╣реЛрдЧрд╛, рддреЛ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рд╣реИред

рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдЧреЛ рдЬрдирд░реЗрдЯ рдХрд┐рдП рдЧрдП рдкреБрдирд░рд╛рд╡реГрддрд┐ (рдФрд░ рдХрдбрд╝реЗ) рд╕рдорд░реНрдерди рдкрд░реНрдпрд╛рдкреНрдд рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ?

рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдореЗрд░рд╛ рдореБрдЦреНрдп рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдп рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпрджрд┐ рд╡рд╣ рдбреНрд░рд╛рдЗрд╡рд┐рдВрдЧ рдХрд╛рд░рдХ рд╣реЛрддрд╛, рддреЛ рд╢рд╛рдпрдж go generate рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрддрд╛ред рдпрд╣ рдореВрд▓реНрдп рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдЧрд╛рд░рдВрдЯреА рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред Stringer() рддрд░реНрдХ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХрдЪреНрдЪрд╛ рдореВрд▓реНрдп iota рдпрд╛ int рдпрд╛ "рд╡рд╛рд╕реНрддрд╡рд┐рдХ" рдорд╛рди рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред рдЖрдкрдХреЛ (Un)MarshalJSON , (Un)MarshalBinary , Scanner/Valuer рдФрд░ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рдХреНрд░рдорд╛рдВрдХрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рднреА рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдк рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ Stringer рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрдирд╛рдо рд╕рдВрдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЧреЛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдЬреЛ рдХреБрдЫ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

@griesemer рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдХрдо рд╕реЗ рдХрдо рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ/рд╣рдЯрд╛рдиреЗ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдПрдирдореЛрдВ рдХреА рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХрд╛ рдкреВрд░реА рддрд░рд╣ рдЙрддреНрддрд░ рдирд╣реАрдВ рджрд┐рдпрд╛ рд╣реЛрдЧрд╛ред рдЙрдиреНрд╣реЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реЛрдирд╛ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд╛ рдПрдХ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред

@рдореЗрд░реЛрд╡рд┐рдпрд╕ рд╕реЗ https://github.com/golang/go/issues/19814#issuecomment -290969864

рдХреЛрдИ рднреА рдкреИрдХреЗрдЬ рдЬреЛ рдХрднреА рднреА рдПрдирдо рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдФрд░ рдЬрдмрд░рди рдЙрдирдХреЗ рд╕рднреА рдЖрдпрд╛рддрдХреЛрдВ рдХреЛ рддреЛрдбрд╝ рджреЗрдЧрд╛

рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдЕрдиреНрдп рдмреНрд░реЗрдХрд┐рдВрдЧ рдПрдкреАрдЖрдИ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдЕрд▓рдЧ рдХреИрд╕реЗ рд╣реИред рдпрд╣ рдкреИрдХреЗрдЬ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдкрд░ рдмреАрд╕реА рдХреЛ рд╕рдореНрдорд╛рдирдкреВрд░реНрд╡рдХ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдЬреИрд╕реЗ рдХрд┐ рдкреНрд░рдХрд╛рд░, рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдмрджрд▓рддреЗ рд╣реИрдВред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЙрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╣реЛрдЧрд╛ рдЬрд┐рдирдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╕рднреА-рдмрд┐рдЯреНрд╕-рд╢реВрдиреНрдп рдирд╣реАрдВ рдерд╛ред рдЖрдЬ рдРрд╕реЗ рдХреЛрдИ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИрдВред рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╡рд┐рд░реБрджреНрдз рдПрдХ рдЪрд┐рд╣реНрди рдХреЗ рд░реВрдк рдореЗрдВ рдЧрд┐рдирдирд╛ рд╣реЛрдЧрд╛ред

рдЪреИрдирд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднрд╛рд╖рд╛ рдХреЛ make рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдХрд╛рд░рдг рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЪреИрдирд▓ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рд╣реИред рдЕрдиреНрдпрдерд╛ make рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдЪреИрдирд▓ рдмрдлрд░ рдЖрдХрд╛рд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛ рдореМрдЬреВрджрд╛ рдЪрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рдЪреИрдирд▓ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

@derekperkins рдЕрдзрд┐рдХрд╛рдВрд╢ рдЕрдиреНрдп API рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдХреНрд░рдорд┐рдХ рдорд░рдореНрдордд рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ Russ Cox рд╡рд┐рд╡рд░рдг рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ, рдпрд╣ рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЛрдВ рдХреЛ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИред

рдУрдкрди рдПрдирдо (рд╡рд░реНрддрдорд╛рди рдХреЙрдиреНрд╕реНрдЯ + рдЖрдИрдУрдЯрд╛ рдирд┐рд░реНрдорд╛рдг рдХреА рддрд░рд╣) рдХреНрд░рдорд┐рдХ рдорд░рдореНрдордд рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдП) рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдирдП рдореВрд▓реНрдп рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛, рдмреА) рдирдП рдореВрд▓реНрдп рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рд╡рд░реНрд╕ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛, рд╕реА) рдореВрд▓реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдирд╛ред рдпрд╛, рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдорд╛рди рдХреЛ рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ a) рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрдВрдж рдХрд░реЗрдВ, b) рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рд╡рд░реНрд╕ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░реЗрдВ, c) рдорд╛рди рдХреЛ рд╣рдЯрд╛ рджреЗрдВред

рдмрдВрдж (рдХрдВрдкрд╛рдЗрд▓рд░-рдЪреЗрдХ рдХреЗ рд▓рд┐рдП рдердХрд╛рд╡рдЯ) рдХреЗ рд╕рд╛рде рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдорд╛рди рдХреА рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВ рдпрд╛ рдПрдХ рдирдпрд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕рдВрдХрд▓рдХ рддреБрд░рдВрдд рдПрдХ рд▓рд╛рдкрддрд╛ рд╕реНрд╡рд┐рдЪ-рдХреЗрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд┐рдХрд╛рдпрдд рдХрд░реЗрдЧрд╛ред рдФрд░ рдЖрдк рдПрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдореВрд▓реНрдп рдХреА рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗред

рд╕рд╡рд╛рд▓ рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рддреЛрдбрд╝рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рд╡реЗ рдЕрд▓рдЧрд╛рд╡ рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ), рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХрд┐ рдХреНрдпрд╛ рд╡рд┐рддрд░рд┐рдд рдХреЛрдб-рдмреЗрд╕ рдкрд░ рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЧреИрд░-рдмреНрд░реЗрдХрд┐рдВрдЧ рдЕрдиреБрдХреНрд░рдо рд╣реИ рдЬреЛ рдЯреВрдЯрддрд╛ рдирд╣реАрдВ рд╣реИред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЙрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╣реЛрдЧрд╛ рдЬрд┐рдирдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╕рднреА-рдмрд┐рдЯреНрд╕-рд╢реВрдиреНрдп рдирд╣реАрдВ рдерд╛ред рдЖрдЬ рдРрд╕реЗ рдХреЛрдИ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИрдВред рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╡рд┐рд░реБрджреНрдз рдПрдХ рдЪрд┐рд╣реНрди рдХреЗ рд░реВрдк рдореЗрдВ рдЧрд┐рдирдирд╛ рд╣реЛрдЧрд╛ред

@ianlancetaylor рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдмрд╛рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдПрдирдо рдХреЛ 0 рдЖрдзрд╛рд░рд┐рдд рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдЬреЛ рдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдЬреИрд╕реЗ @griesemer рдЗрд╕рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реИ), рддреЛ 0 рдЬреИрд╕рд╛ рдХрд┐ рд╕реВрдЪрдХрд╛рдВрдХ рд▓рдЧрддрд╛ рд╣реИ рдпрд╣ "рдСрд▓-рдмрд┐рдЯреНрд╕-рдЬреАрд░реЛ" рдХреЗ рд░реВрдк рдореЗрдВ рджреЛрдЧреБрдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдмрдВрдж (рдХрдВрдкрд╛рдЗрд▓рд░-рдЪреЗрдХ рдХреЗ рд▓рд┐рдП рдердХрд╛рд╡рдЯ) рдХреЗ рд╕рд╛рде рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред

@Merovius рдпрджрд┐ рдердХрд╛рд╡рдЯ рдХреА рдЬрд╛рдБрдЪ go vet рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдЯреВрд▓рд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдХреА рдЧрдИ рдереА рдЬреИрд╕рд╛ рдХрд┐ @jediorange рджреНрд╡рд╛рд░рд╛ рд╕реБрдЭрд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ рдмрдирд╛рдо рдХрдВрдкрд╛рдЗрд▓рд░ рджреНрд╡рд╛рд░рд╛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреА рдЪрд┐рдВрддрд╛рдУрдВ рдХреЛ рдХрдо рдХрд░реЗрдЧрд╛?

@derekperkins рдЙрдирдХреА рд╣рд╛рдирд┐рдХрд╛рд░рдХрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рд╣рд╛рдБред рдЙрдирдХреА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреА рдХрдореА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВред рд╕рдВрд╕реНрдХрд░рдг-рддрд┐рд░рдЫрд╛ рдХреЗ рд╕рдорд╛рди рдореБрджреНрджреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рднреА рд╣реЛрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд╡реЗ рдЖрдорддреМрд░ рдкрд░ (syscalls, рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░реЛрдЯреЛрдХреЙрд▓, рдлрд╝рд╛рдЗрд▓ рд╕реНрд╡рд░реВрдк, рд╕рд╛рдЭрд╛ рдСрдмреНрдЬреЗрдХреНрдЯтАж) рдХреЗ рд▓рд┐рдП рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдкреНрд░реЛрдЯреЛ 3 рдХреЛ рдЦреБрд▓реЗ рдПрдирдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдкреНрд░реЛрдЯреЛ 2 рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ - рдпрд╣ рдХрдИ рдЖрдЙрдЯреЗрдЬ рдФрд░ рдбреЗрдЯрд╛ рднреНрд░рд╖реНрдЯрд╛рдЪрд╛рд░ рдХреА рдШрдЯрдирд╛рдУрдВ рд╕реЗ рд╕реАрдЦрд╛ рдЧрдпрд╛ рд╕рдмрдХ рд╣реИред рднрд▓реЗ рд╣реА Google рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд░реНрдЬрди рд╕реНрдХреНрдпреВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕рд╛рд╡рдзрд╛рди рд╣реИред рдореЗрд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдорд▓реЛрдВ рдХреЗ рд╕рд╛рде рдЦреБрд▓реЗ рдПрдирдо рд╕рд┐рд░реНрдл рд╕рд╣реА рд╕рдорд╛рдзрд╛рди рд╣реИрдВред рдФрд░ рдЕрд╡реИрдз рдореВрд▓реНрдпреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдХрдерд┐рдд рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрдЬ рдкрд░ рдмрд╣реБрдд рдХреБрдЫ рдирд╣реАрдВ рд▓рд╛рддреЗ рд╣реИрдВ, рдЬреЛ рдореИрдВ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВред

рдпрд╣ рд╕рдм рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдореИрдВ рдирд┐рд░реНрдгрд╛рдпрдХ рдирд╣реАрдВ рд╣реВрдВред

@derekperkins https://github.com/golang/go/issues/19814#issuecomment -322818206 рдореЗрдВ рдЖрдк рдЗрд╕рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЖрдкрдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ):

  • рдПрдХ рдПрдирдо рдШреЛрд╖рдгрд╛ рдирд╛рдорд┐рдд рдПрдирдо рдореВрд▓реНрдпреЛрдВ (рд╕реНрдерд┐рд░рд╛рдВрдХ) рдХреЗ рд╕рд╛рде рдПрдХ рдПрдирдо рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреА рд╣реИ
  • рдЙрди рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рд╕рдВрднрд╡ рд╣реИ
  • рдЗрд╕рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рдмрд╛рд╣рд░ рдПрдирдо рдореЗрдВ рдХреЛрдИ рдореВрд▓реНрдп рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
    рдФрд░ рдмрд╛рдж рдореЗрдВ: рдПрдирдо рдкрд░ рдПрдХ рд╕реНрд╡рд┐рдЪ рд╕рдВрдкреВрд░реНрдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдпрд╛ рд╢рд╛рдпрдж рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ) рд╕рдВрдкреВрд░реНрдг (рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рдЧрддрд╛ рд╣реИ)

https://github.com/golang/go/issues/19814#issuecomment -322895247 рдореЗрдВ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐:

  • рдкрд╣рд▓рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдорд╛рди рд╢рд╛рдпрдж рдбрд┐рдлрд╝реЙрд▓реНрдЯ (рд╢реВрдиреНрдп) рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рдпрд╣ рдПрдирдо рд╡реИрд░рд┐рдПрдмрд▓ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд▓рд┐рдП рдорд╛рдпрдиреЗ рд░рдЦрддрд╛ рд╣реИ)
  • рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдЖрдкрдХреА рдкреНрд░рд╛рдердорд┐рдХ рдкреНрд░реЗрд░рдгрд╛ рдирд╣реАрдВ рд╣реИ

рдФрд░ https://github.com/golang/go/issues/19814#issuecomment -322903714 рдореЗрдВ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ "рдЙрдиреНрд╣реЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ"ред

рдореИрдВ рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдВ: рддреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкреНрд░рд╛рдердорд┐рдХ рдкреНрд░реЗрд░рдХ рдирд╣реАрдВ рд╣реИ, рдареАрдХ рд╣реИред рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдПрдирдо рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рдПрдирдо рдШреЛрд╖рдгрд╛ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдШреЛрд╖рдгрд╛ рдХреЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдм рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдпрд╣ рдПрдХ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рд╣реЛрдЧрд╛)ред рдХреНрдпрд╛ рд╡реЗ рдЪрд░ рд╣реИрдВ? (рд▓реЗрдХрд┐рди рддрдм рд╡реЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ)ред

https://github.com/golang/go/issues/19814#issuecomment -322903714 рдореЗрдВ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдПрдирдо рдХреЛ 0-рдЖрдзрд╛рд░рд┐рдд рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдПрдирдо рдШреЛрд╖рдгрд╛ рдПрдирдо рдирд╛рдореЛрдВ рдХреА рдПрдХ рдХреНрд░рдордмрджреНрдз рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдПрдХ рдирдП рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддреА рд╣реИ рдЬреЛ рдХрд┐ рдПрдирдо рдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдореЗрдВ 0-рдЖрдзрд╛рд░рд┐рдд рд╕реНрдерд┐рд░ рд╕реВрдЪрдХрд╛рдВрдХ рд╣реИрдВ (рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрд░рдХреНрд╖рд┐рдд рд╣реИ)ред рдХреНрдпрд╛ рдпрд╣реА рдорддрд▓рдм рд╣реИ рддреБрдореНрд╣рд╛рд░рд╛? рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рд╕рд░рдгреА рдФрд░ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдШреЛрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реЛрдЧрд╛? рд╕рд░рдгреА рд╕реАрдорд╛ рдЬрд╛рдВрдЪ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдЧреА рдХрд┐ рдЖрдк рдПрдирдо рд░реЗрдВрдЬ рдХреЛ "рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд" рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрднрд╡ рд╣реЛрдЧреАред

рдореИрдВ рдХреНрдпрд╛ рдЦреЛ рд░рд╣рд╛ рд╣реВрдБ?

рдореИрдВ рдЙрд▓рдЭрди рдореЗрдВ рд╣реВрдВ: рддреЛ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкреНрд░рд╛рдердорд┐рдХ рдкреНрд░реЗрд░рдХ рдирд╣реАрдВ рд╣реИ, рдареАрдХ рд╣реИред

рдореЗрд░реЗ рдЕрдкрдиреЗ рдХрд╛рд░рдг рд╣реИрдВ рдХрд┐ рдореИрдВ рдПрдирдо рдХреНрдпреЛрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд╕рд╛рде рд╣реА рдпрд╣ рднреА рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рдзрд╛рдЧреЗ рдореЗрдВ @bep рдФрд░ рдЕрдиреНрдп рд╕рд╣рд┐рдд, рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдЖрд╡рд╢реНрдпрдХ рднрд╛рдЧреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдпрд╣ рдХрдо рд╕реЗ рдХрдо рдПрдирдо рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рдПрдирдо рдШреЛрд╖рдгрд╛ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ рдЬреЛ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИрдВ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдШреЛрд╖рдгрд╛ рдХреЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдм рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдпрд╣ рдПрдХ рд╡рд┐рд░реЛрдзрд╛рднрд╛рд╕ рд╣реЛрдЧрд╛)ред рдХреНрдпрд╛ рд╡реЗ рдЪрд░ рд╣реИрдВ? (рд▓реЗрдХрд┐рди рддрдм рд╡реЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ)ред

рдЬрдм рдореИрдВ рдЙрдиреНрд╣реЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реВрдВ, рддреЛ рдпрд╣ @Merovius рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рд╡реЗ рдЦреБрд▓реЗ рджреБрд╢реНрдорди рд╣реИрдВред рдирд┐рд░реНрдорд╛рдг рд╕рдордп рдкрд░ рд╕реНрдерд┐рд░, рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдмрдВрдж рдирд╣реАрдВред

# 19814 (рдЯрд┐рдкреНрдкрдгреА) рдореЗрдВ рдЖрдк рдХрд╣ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдПрдирдо рдХреЛ 0-рдЖрдзрд╛рд░рд┐рдд рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдпрд╣ рд╕рд┐рд░реНрдл рдореИрдВ рдЕрдкрдиреЗ рд╡реЗрддрди рд╕реЗ рдкрд░реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдХреИрд╕реЗ рдХрд▓реНрдкрдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ рдЖрдкрдХреЗ https://github.com/golang/go/issues/19814#issuecomment -322884746 рдФрд░ @ianlancetaylor рдХреЗ https рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкрд░реНрджреЗ рдХреЗ рдкреАрдЫреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: //github.com/golang/go/issues/19814#issuecomment -322899668

"рдХреНрдпрд╛ рд╣рдо рдПрдирдо рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕реАрдорд┐рдд рдЕрдВрдХрдЧрдгрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкрд╛рд╕реНрдХрд▓ рдореЗрдВ (рдЬрд┐рд╕рдореЗрдВ рдореИрдВрдиреЗ рдПрдХ рдмрд╛рд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд┐рдпрд╛ рдерд╛, рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╡рд╛рдкрд╕ рдХрдм), рдпрд╣ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рдЕрдХреНрд╕рд░ рдЪрд░рдгреЛрдВ рдореЗрдВ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдерд╛> 1. рдФрд░ рдХрднреА-рдХрднреА рдХреЛрдИ рдПрдирдо рдореВрд▓реНрдп рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред"

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЖрдк рдХрд┐рд╕реА рднреА рдЧреИрд░-рдкреВрд░реНрдгрд╛рдВрдХ рдПрдирдо рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдХреИрд╕реЗ рдмрдирд╛рдПрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ рд╕рд╡рд╛рд▓ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЕрдВрдХрдЧрдгрд┐рдд рдХреЗ рд▓рд┐рдП рдПрдирдо рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рджрд╕реНрдп рдХреЛ рдШреЛрд╖рдгрд╛ рдЖрджреЗрд╢ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рдирд┐рд╣рд┐рдд рд░реВрдк рд╕реЗ рдЕрд╕рд╛рдЗрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдЙрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдХрд╛рдлреА рдЬрдЯрд┐рд▓ рд╣реЛрдЧрд╛ рдЬрд┐рдирдХрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рд╕рднреА-рдмрд┐рдЯреНрд╕-рд╢реВрдиреНрдп рдирд╣реАрдВ рдерд╛ред рдЖрдЬ рдРрд╕реЗ рдХреЛрдИ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИрдВред рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╡рд┐рд░реБрджреНрдз рдПрдХ рдЪрд┐рд╣реНрди рдХреЗ рд░реВрдк рдореЗрдВ рдЧрд┐рдирдирд╛ рд╣реЛрдЧрд╛ред

рджреЛрдмрд╛рд░рд╛, рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХрдВрдкрд╛рдЗрд▓рд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдмрд╛рддрдЪреАрдд рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ред рджрд┐рди рдХреЗ рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдХреБрдЫ рднреА рдХрдЯреНрдЯрд░рдкрдВрдереА рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, "рдпрд╣ рдХреНрд▓рд╛рд╕рд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рдПрдЧрд╛, рдЬреЛ рд▓рдЧрднрдЧ 45 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдкрд╛рд╕реНрдХрд▓ рджреНрд╡рд╛рд░рд╛ рдЕрдЧреНрд░рдгреА, рдПрдирдо рдХреА рдУрд░ рд▓реЗ рдЧрдП рдереЗ", рдФрд░ рдпрд╣ рдмрд┐рд▓ рдлрд┐рдЯ рдмреИрдарддрд╛ рд╣реИред

рдХрд┐рд╕реА рдФрд░ рдХреЗ рд▓рд┐рдП рдЬрд┐рд╕рдиреЗ рд░реБрдЪрд┐ рд╡реНрдпрдХреНрдд рдХреА рд╣реИ, рдХреГрдкрдпрд╛ рдмреЗрдЭрд┐рдЭрдХ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВред

рдПрдХ рдФрд░ рд╕рд╡рд╛рд▓ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреЛрдИ рдЗрди рдПрдирдореЛрдВ рдХреЛ рд╕рд░рдгрд┐рдпреЛрдВ рдпрд╛ рд╕реНрд▓рд╛рдЗрд╕ рдореЗрдВ рдЕрдиреБрдХреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдЕрдХреНрд╕рд░ рдПрдХ рдПрдирдо рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рдХреБрд╢рд▓ рдФрд░ рдХреЙрдореНрдкреИрдХреНрдЯ рддрд░реАрдХрд╛ рд╣реЛрддрд╛ рд╣реИ-> рдореВрд▓реНрдп рдорд╛рдирдЪрд┐рддреНрд░рдг рдФрд░ рдорд╛рдирдЪрд┐рддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╣реЛрдЧреА, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред

@derekperkins рдареАрдХ рд╣реИ, рдореБрдЭреЗ рдЪрд┐рдВрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдореБрдЭреЗ) рдПрдХ рд╡рд░реНрдЧ рдореЗрдВ рд╡рд╛рдкрд╕ рд░рдЦрддрд╛ рд╣реИ: рдЖрдк рдХрд┐рд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдХреНрдпрд╛ рдЖрдк рдХреЗрд╡рд▓ рдпрд╣ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕реНрдерд┐рд░рд╛рдВрдХ рдФрд░ рд╢рд╛рдпрдж рдЖрдИрдУрдЯрд╛ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВ (рдФрд░ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЛ рдЬрдирд░реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ)? рдпрд╣реА рд╣реИ, рдХреБрдЫ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛рддреНрдордХ рдЪреАрдиреА рдПрдХ рд╕рдВрдХреЗрддрди рдХреЗ рд▓рд┐рдП рдЬреЛ рдЖрдкрдХреЛ (рд╢рд╛рдпрдж) рдЕрддреНрдпрдзрд┐рдХ рдмреЛрдЭрд┐рд▓ рд▓рдЧрддрд╛ рд╣реИ? (рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЬрд╡рд╛рдм рд╣реИ, рдмрд╕ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред)

рдЖрдкрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЪрд╛рд╣рдиреЗ рдХреЗ рдЖрдкрдХреЗ рдЕрдкрдиреЗ рдХрд╛рд░рдг рд╣реИрдВ, рд╢рд╛рдпрдж рдЖрдк рдХреБрдЫ рдФрд░ рдмрддрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдХрд╛рд░рдг рдХреНрдпрд╛ рд╣реИрдВред рдЖрдкрдиреЗ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдЬреЛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛, рд╡рд╣ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╢рд╛рдпрдж рдХреБрдЫ рдпрд╛рдж рдЖ рд░рд╣рд╛ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдЦрдбрд╝рд╛ рд╣реИ, рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ ("рдПрдирдореНрд╕") рдХреА рдереЛрдбрд╝реА рдЕрд▓рдЧ рд╕рдордЭ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛рдУрдВ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИ: рдкрд╛рд╕реНрдХрд▓ рдПрдирдореНрд╕ рдФрд░ рд╕реНрд╡рд┐рдлреНрдЯ рдПрдирдореНрд╕ рдХреЗ рдмреАрдЪ рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╢реНрд░реГрдВрдЦрд▓рд╛ рд╣реИред рдЬрдм рддрдХ рдЖрдк (рдпрд╛ рдХреЛрдИ рдФрд░) рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИ (рдореИрдВ рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдБ, рдЖрдкрдХреЛ рдпрд╛рдж рд╣реИ), рдХреЛрдИ рднреА рд╕рд╛рд░реНрдердХ рдкреНрд░рдЧрддрд┐ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдЧреБрдгреЛрдВ рдкрд░ рдмрд╣рд╕ рдХрд░рдирд╛ рднреА рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред

рдХреНрдпрд╛ рдЗрд╕рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рд╣реИ?

@griesemer рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдФрд░ рдореИрдВ рдЙрд╕ рдмрд╛рд░ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭрддрд╛ рд╣реВрдВ рдЬрд┐рд╕реЗ @rsc рдиреЗ рдЧреЛрдлрд░рдХреЙрди рдореЗрдВ рдмрд╛рдд рдХреА рдереАред рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдореЗрд░реА рддреБрд▓рдирд╛ рдореЗрдВ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдЧрд╣рд░реА рд╕рдордЭ рд░рдЦрддреЗ рд╣реИрдВред #21473 рдореЗрдВ, рдЖрдкрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдерд╛ рдХрд┐ рд╡рд░реНрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЖрдИрдУрдЯрд╛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕ рд╕рдордп рдХреЛрдИ рд╕рдореНрдореЛрд╣рдХ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдирд╣реАрдВ рдерд╛ред рдХреНрдпрд╛ рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ enum рдХреЛ рд╢реБрд░реВ рд╕реЗ рд╣реА рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛? рдореБрдЭреЗ рдЖрдкрдХреА рд░рд╛рдп рдЬрд╛рдирдиреЗ рдореЗрдВ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реЛрдЧреА рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЧреЛ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдп рдЬреЛрдбрд╝ рджреЗрдЧрд╛ рдпрд╛ рдирд╣реАрдВ, рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗ?

@derekperkins https://github.com/golang/go/issues/19814#issuecomment -323144075 рдореЗрдВ рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ: рдЙрд╕ рд╕рдордп (рдЧреЛ рдХреЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдореЗрдВ) рд╣рдо рдХреЗрд╡рд▓ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕рд░рд▓ (рдкрд╛рд╕реНрдХрд▓ рдпрд╛ рд╕реА-рд╕реНрдЯрд╛рдЗрд▓ рдХрд╣реЗрдВ) рдПрдирдореНрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рдереЗред рдореБрдЭреЗ рд╕рднреА рд╡рд┐рд╡рд░рдг рдпрд╛рдж рдирд╣реАрдВ рд╣реИрдВ рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рднрд╛рд╡рдирд╛ рдереА рдХрд┐ рдПрдирдо рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдорд╢реАрдирд░реА рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд▓рд╛рдн рдирд╣реАрдВ рдерд╛ред рд╣рдордиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рд╡реЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдирд┐рд░рдВрддрд░ рдШреЛрд╖рдгрд╛рдУрдВ рдХрд╛ рдорд╣рд┐рдорд╛рдордВрдбрди рдХрд░рддреЗ рдереЗред

рдЗрди рдкрд╛рд░рдВрдкрд░рд┐рдХ рдПрдирдореЛрдВ рдХреЗ рд╕рд╛рде рднреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВ: рдЙрдирдХреЗ рд╕рд╛рде рдЕрдВрдХрдЧрдгрд┐рдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ (рд╡реЗ рдХреЗрд╡рд▓ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИрдВ), рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ рдпрджрд┐ рд╡реЗ "(рдПрдирдо) рд╕реАрдорд╛ рд╕реЗ рдмрд╛рд╣рд░" рдЬрд╛рддреЗ рд╣реИрдВ? рдЧреЛ рдореЗрдВ рд╡реЗ рд╕рд┐рд░реНрдл рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИрдВ рдФрд░ "рд╕реАрдорд╛ рд╕реЗ рдмрд╛рд╣рд░" рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рдПрдХ рдФрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╣реИ: рдкрд╛рд╕реНрдХрд▓ рдореЗрдВ рд╡рд┐рд╢реЗрд╖ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрд╛рд░реНрдп рдереЗ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрд╕рдпреВрд╕реАрд╕реА рдФрд░ рдкреАрдЖрд░рдИрдбреА) рдПрдирдо рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХ рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рдЖрдЧреЗ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП (рд╕реА рдореЗрдВ рд╕рд┐рд░реНрдл ++ рдпрд╛ - рдХрд░рддрд╛ рд╣реИ)ред рд▓реЗрдХрд┐рди рд╡рд╣реА рд╕рдорд╕реНрдпрд╛ рдпрд╣рд╛рдВ рднреА рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИ: рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдХреЛрдИ рдЕрдВрдд рд╕реЗ рдЖрдЧреЗ рдирд┐рдХрд▓ рдЬрд╛рддрд╛ рд╣реИ (рд▓реВрдк рдореЗрдВ ++ рдпрд╛ рдкрд╛рд╕реНрдХрд▓ рд╕рдордХрдХреНрд╖ рдПрд╕рдпреВрд╕реАрд╕реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдирдо рдорд╛рдиреЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд▓реВрдк рдореЗрдВ рдмрд╣реБрдд рдЖрдо рд╕рдорд╕реНрдпрд╛)ред рдЕрдВрдд рдореЗрдВ, рдПрдХ рдПрдирдо рдШреЛрд╖рдгрд╛ рдПрдХ рдирдП рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рддрддреНрд╡ рдПрдирдо рдорд╛рди рд╣реИрдВред рдЗрди рдорд╛рдиреЛрдВ рдХреЗ рдирд╛рдо рд╣реИрдВ (рдПрдирдо рдШреЛрд╖рдгрд╛ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд), рд▓реЗрдХрд┐рди рд╡реЗ рдирд╛рдо (рдкрд╛рд╕реНрдХрд▓, рд╕реА рдореЗрдВ) рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдорд╛рди рджрд╛рдпрд░реЗ рдореЗрдВ рд╣реИрдВред рдпрд╣ рдереЛрдбрд╝рд╛ рдЕрд╕рдВрддреЛрд╖рдЬрдирдХ рд╣реИ: рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдирдореЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░рддреЗ рд╕рдордп, рдХреЛрдИ рдЙрдореНрдореАрдж рдХрд░реЗрдЧрд╛ рдХрд┐ рдХреЛрдИ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╡рд┐рд░реЛрдз рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдирдо рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдПрдирдо рд╡реИрд▓реНрдпреВ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдмреЗрд╢рдХ рдЧреЛ рдЗрд╕реЗ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рд░рдВрддрд░ рдШреЛрд╖рдгрд╛ рднреА рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдирдпрд╛ рдирд╛рдо рд╕реНрдерд╛рди рдкреЗрд╢ рдХрд░ рд░рд╣рд╛ рд╣реИред рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рдкреНрд░рддреНрдпреЗрдХ рдЧрдгрдирд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдирд╛рдо рд╕реНрдерд╛рди рдкреЗрд╢ рдХрд░рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╣рд░ рдмрд╛рд░ рдПрдХ рдПрдирдо рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕реЗ рдПрдирдо рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рде рдпреЛрдЧреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ рдХрд╖реНрдЯрдкреНрд░рдж рд╣реИред рд╕реНрд╡рд┐рдлреНрдЯ рдЬрд╣рд╛рдВ рд╕рдВрднрд╡ рд╣реЛ рд╡рд╣рд╛рдВ рдПрдирдо рдкреНрд░рдХрд╛рд░ рдХреЛ рдШрдЯрд╛рдХрд░ рдЗрд╕реЗ рд╣рд▓ рдХрд░рддреА рд╣реИ рдФрд░ рдлрд┐рд░ рдХреЛрдИ рдПрдХ рдбреЙрдЯ рдХреЗ рд╕рд╛рде рдПрдирдо рд╡реИрд▓реНрдпреВ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдХрд╛рдлреА рдорд╢реАрдирд░реА рд╣реИред рдФрд░ рдЕрдВрдд рдореЗрдВ, рдХрднреА-рдХрднреА (рдЕрдХреНрд╕рд░, рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдПрдкреАрдЖрдИ рдореЗрдВ), рдХрд┐рд╕реА рдХреЛ рдПрдХ рдПрдирдо рдШреЛрд╖рдгрд╛ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдпрджрд┐ рдпрд╣ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ (рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЛрдб рдирд╣реАрдВ рд╣реИ), рддреЛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд╕рд╛рде, рд╡реЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИрдВред

рдЗрд╕рдореЗрдВ рд╢рд╛рдпрдж рдФрд░ рднреА рдХреБрдЫ рд╣реИ; рдмрд╕ рдпрд╣реА рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ рд╣рдордиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рдСрд░реНрдереЛрдЧреЛрдирд▓ рдЯреВрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреЛ рдореЗрдВ рдПрдирдореНрд╕ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рдерд╛: рдХрд╕реНрдЯрдо рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рдЬреЛ рдЧрд▓рдд рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХрдо рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рд╢реБрдЧрд░ рдХреЗ рд▓рд┐рдП iota рдореИрдХреЗрдирд┐рдЬреНрдо (рдФрд░ рдХреНрд╖рдорддрд╛ рдмрд╛рд░-рдмрд╛рд░ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХреЛ рдЫреЛрдбрд╝ рджреЗрддреА рд╣реИ)ред

рдЗрд╕рд▓рд┐рдП рдореЗрд░реЗ рдкреНрд░рд╢реНрди: рдЖрдк рд╡рд┐рд╢реЗрд╖ рдПрдирдо рдШреЛрд╖рдгрд╛рдУрдВ рд╕реЗ рдХреНрдпрд╛ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдереЛрдбрд╝рд╛ рд╕рд╛ рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рдУрд╡рд░рд╣реЗрдб рдХреЗ рд╕рд╛рде рдЧреЛ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдЕрдиреБрдХрд░рдг рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рдореИрдВ рдЧрдгрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ, рдФрд░ рдПрдХ рдПрдирдо рдкреНрд░рдХрд╛рд░ рдЬрд┐рд╕реЗ рдШреЛрд╖рдгрд╛ рдХреЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рд╕реНрд╡рд┐рдлреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдирдо рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдФрд░ рдЕрдзрд┐рдХ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВред

рдЧреЛ рдореЗрдВ рдЧреЛ рдЬрдирд░реЗрдЯрд░ рд╕реЗ рдЧрдгрдирд╛ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧрд░ рд╣реИред рдПрдкреАрдЖрдИ рд╕реАрдорд╛рдУрдВ рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рд╕рдорд╕реНрдпрд╛рдЧреНрд░рд╕реНрдд рд╣реИред рдПрдирдо рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдХреНрд╖рдорддрд╛рдПрдВ (рд╕реНрд╡рд┐рдлреНрдЯ рдореЗрдВ рдХрд╣реЗрдВ) рдмрд╣реБрдд рд╣реА рд╡рд┐рдкрд░реАрдд рд▓рдЧрддреА рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░реА рдСрд░реНрдереЛрдЧреЛрдирд▓ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рдорд┐рд▓рд╛рддреА рд╣реИред рдЧреЛ рдореЗрдВ, рд╣рдо рд╢рд╛рдпрдж рдкреНрд░рд╛рдердорд┐рдХ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдмреНрд▓реЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХрд░реЗрдВрдЧреЗред

@griesemer рдЖрдкрдХреЗ рд╡рд┐рдЪрд╛рд░рд╢реАрд▓ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдЗрд╕ рдмрд╛рдд рд╕реЗ рдЕрд╕рд╣рдордд рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рд╡реЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдирд┐рд░рдВрддрд░ рдШреЛрд╖рдгрд╛рдУрдВ рдХрд╛ рдорд╣рд┐рдорд╛рдордВрдбрди рдХрд░рддреЗ рд╣реИрдВред рдЧреЛ рдореЗрдВ рдЯрд╛рдЗрдк рд╕реЗрдлреНрдЯреА рдХрд╛ рд╣реЛрдирд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ, рдФрд░ рдореБрдЦреНрдп рдореВрд▓реНрдп рдЬреЛ enum рдореБрдЭреЗ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛, рд╡рд╣ рд╣реИ рд╡реИрд▓реНрдпреВ рд╕реЗрдлреНрдЯреАред рдЧреЛ рдореЗрдВ рдЖрдЬ рдХреА рдирдХрд▓ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЙрд╕ рдЪрд░ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдкрд░ рд╕рддреНрдпрд╛рдкрди рдХрд╛рд░реНрдп рдЪрд▓рд╛рдирд╛ рд╣реИред рдпрд╣ рд╡рд░реНрдмреЛрдЬрд╝ рд╣реИ рдФрд░ рдЧрд▓рддрд┐рдпрд╛рдБ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдЬ рдХреА рддрд░рд╣ рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рд╕рдВрднрд╡ рд╣реИред рдореИрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдирдо рдХреЗ рд╕рд╛рдордиреЗ рдЯрд╛рдЗрдк рдирд╛рдо рдХреЛ рдкреНрд░реАрдлрд╝рд┐рдХреНрд╕ рдХрд░рдХреЗ рдиреЗрдорд╕реНрдкреЗрд╕ рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рд╡рд░реНрдмреЛрдЬрд╝ рдХреЗ рджреМрд░рд╛рди рдХреЛрдИ рдмрдбрд╝реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИред

рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ iota рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЙрдкрдпреЛрдЧреЛрдВ рдХреЛ рдирд╛рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред рд╢рд╛рдВрдд рд╣реЛрдиреЗ рдкрд░, рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рдореЗрд░реЗ enum -рдЬреИрд╕реЗ рдорд╛рди рдмрд╛рд╣рд░реА рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдЬреИрд╕реЗ рдбреАрдмреА рдпрд╛ рдмрд╛рд╣рд░реА рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдорд╛рдирдЪрд┐рддреНрд░ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдореИрдВ рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдкреБрди: рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рд╛ рдирд╣реАрдВ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред iota рдЙрди рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕реНрдерд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдореИрдВ enum рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рдиреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдБрдЧрд╛ред

рджрд┐рди рдХреЗ рдЕрдВрдд рдореЗрдВ, рдореИрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдореИрдВ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЛ рдФрд░ рдХрд┐рддрдирд╛ рд╕реНрдкрд╖реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБред рдореБрдЭреЗ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ рдЕрдЧрд░ рдЧреЛ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдлреИрд╢рди рдореЗрдВ рдЙрдирдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ рдЬрд╛рдПред рд╕рдЯреАрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдореИрдВ рдЕрднреА рднреА рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдкрд╛рдКрдВрдЧрд╛ рдФрд░ рд╡реЗ рдореЗрд░реЗ рдХреЛрдб рдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛ рджреЗрдВрдЧреЗред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд╣рд┐рдд рддрд░реАрдХрд╛ рдЧреЛ рдЖрдЬ рдПрдирдо рдХрд░рддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ https://github.com/golang/go/issues/19814#issuecomment-290909885 рдореЗрдВ рджреЗрдЦрд╛ рдЧрдпрд╛ рд╣реИ) рд╕рд╣реА рдХреЗ рдХрд╛рдлреА рдХрд░реАрдм рд╣реИред
рдХреБрдЫ рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ:

  1. рдЙрдиреНрд╣реЗрдВ рдкреБрдирд░рд╛рд╡реГрддреНрдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
  2. рдЙрдирдХрд╛ рдХреЛрдИ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд╣реАрдВ рд╣реИ
  3. рдЧреНрд░рд╛рд╣рдХ рдлрд░реНрдЬреА рдПрдирдо рдорд╛рди рдкреЗрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рдореИрдВ # 1 рдХреЗ рдмрд┐рдирд╛ рдареАрдХ рд╣реВрдБред
рдЧреЛ: рдЬрдирд░реЗрдЯ + рд╕реНрдЯреНрд░рд┐рдВрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ # 2 рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рд╡рд╣ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд╕рдВрднрд╛рд▓ рдирд╣реАрдВ рдкрд╛рддрд╛ рд╣реИ, рддреЛ рдЕрдкрдиреЗ "рдПрдирдо" рдХреЗ рдореВрд▓ рдкреНрд░рдХрд╛рд░ рдХреЛ рдПрдХ int рдХреЗ рдмрдЬрд╛рдп рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдмрдирд╛рдПрдВ, рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдирд┐рд░рдВрддрд░ рдорд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

3 рдЖрдЬ рдХреЗ рдЧреЛ рдХреЗ рд╕рд╛рде рд╕рдВрднрд╛рд▓рдирд╛ рдХрдард┐рди рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИред

рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ explicit рдХреАрд╡рд░реНрдб рдЬреЛрдбрд╝реЗрдВред рдпрд╣ рдХреАрд╡рд░реНрдб рдЙрд╕ рдкреИрдХреЗрдЬ рдореЗрдВ рдХреЙрдиреНрд╕реНрдЯреЗрдмрд▓ рдмреНрд▓реЙрдХ рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред (рдпрд╛ restricted ? рдпрд╛ рд╢рд╛рдпрдж enum рдХрд╛ рдЕрд░реНрде explicit type рд╣реИ?)

рдореИрдВрдиреЗ рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛,

//go:generate stringer -type=SearchRequest
explicit type SearchRequest int

const (
    Universal SearchRequest = iota
    Web
    Images
    Local
    News
    Products
    Video
)

const рдмреНрд▓реЙрдХ рдХреЗ рдЕрдВрджрд░ int рд╕реЗ SearchRequest рддрдХ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдкреИрдХреЗрдЬ рд▓реЗрдЦрдХ рдПрдХ рдирдпрд╛ SearchRequest рдорд╛рди рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЧрд▓рддреА рд╕реЗ рдПрдХ рдХреЛ рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реЛрдЧреА (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП SearchRequest рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ int рдкрд╛рд╕ рдХрд░рдХреЗ)ред

рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХреЛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЧрд▓рддреА рд╕реЗ рдирд┐рд░реНрдорд╛рдг-рдПрдХ-рдЕрдорд╛рдиреНрдп-рдПрдХ рдПрдирдо рдХреА рдореБрдЦреНрдп рд╕рдВрдкрддреНрддрд┐ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдЬ рдЧреЛ рдореЗрдВ рдХрдмреНрдЬрд╛ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдЬрдм рддрдХ рдХрд┐ рдЖрдк рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдЬрд╛рддреЗ рдЕрдирдПрдХреНрд╕рдкреЛрд░реНрдЯреЗрдб рдлреАрд▓реНрдб рд░реВрдЯ)ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдирдо рдХреЗ рд╕рд╛рде рджрд┐рд▓рдЪрд╕реНрдк рдЬреЛрдЦрд┐рдо рдЕрдирдкреЗрдХреНрд╖рд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд╕рд╛рде рд╣реИред рдПрдХ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд░реВрдкрд╛рдВрддрд░рдг рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╡реЗ рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореИрдВ рдХреБрдЫ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреЛ рдордирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдирдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдзрд╛рд░рдгрд╛ рдХреЗ рд▓рд┐рдП рдСрд░реНрдереЛрдЧреЛрдирд▓ рд╣реИред рдпрд╣ рдПрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИ рдЬреЛ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдЯрд╛рдЗрдк рди рдХрд┐рдП рдЧрдП рд╕реНрдерд┐рд░рд╛рдВрдХ рдЧрд▓рддреА рд╕реЗ рдФрд░ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдорд╛рди рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @ Randall77 рдХреЗ explicit рдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рд╕реАрдзрд╛ рд╕рд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдмрд┐рдирд╛ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рдХреА рд╣рдореЗрд╢рд╛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдореИрдВ рдХреБрдЫ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреЛ рдордирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЛ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реАрдХреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЛ рддреИрдпрд╛рд░ рд╣реВрдВ

@ianlancetaylor рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛, рдЪрд╛рд╣реЗ рд╕реНрдкрд╖реНрдЯ рдпрд╛ рдирд┐рд╣рд┐рдд рд╣реЛ, рдЙрди рдореБрджреНрджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░реЗрдЧрд╛ рдЬрд┐рдирдХреЗ рдХрд╛рд░рдг рдореБрдЭреЗ рдпрд╣ рдкреНрд░рд╕реНрддрд╛рд╡ рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВ рдмрдирд╛рдирд╛ рдкрдбрд╝рд╛ред рдХреЗрд╡рд▓ рдореВрд▓ рдкреИрдХреЗрдЬ рд╣реА рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрдирд╛рдиреЗ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рдВрддреБрд╖реНрдЯ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред рдпрд╣ рдХреБрдЫ рдорд╛рдпрдиреЛрдВ рдореЗрдВ enum рд╕рдорд╛рдзрд╛рди рд╕реЗ рднреА рдмреЗрд╣рддрд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рди рдХреЗрд╡рд▓ const рдШреЛрд╖рдгрд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ред

@ Randall77 , @ianlancetaylor рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╢реВрдиреНрдп рдорд╛рди рдХреЗ рд╕рд╛рде explicit рд╕реБрдЭрд╛рд╡ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛?

@derekperkins рдкреНрд░рдХрд╛рд░-рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рд╕реЗ encoding/* рдкреИрдХреЗрдЬ рдЬреИрд╕реЗ рдЬреЗрдиреЗрд░рд┐рдХ рдПрдиреНрдХреЛрдбрд░/рдбрд┐рдХреЛрдбрд░реНрд╕ рдореЗрдВ рдЗрди рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

@Merovius рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @ianlancetaylor рдХреЗрд╡рд▓ рдирд┐рд╣рд┐рдд рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрдВрдз рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ)ред рд╕реНрдкрд╖реНрдЯ рд░реВрдкрд╛рдВрддрд░рдг рдЕрднреА рднреА рд╕рдВрднрд╡ рд╣реЛрдЧрд╛ред

@griesemer рдореБрдЭреЗ рдкрддрд╛ рд╣реИ :) рд▓реЗрдХрд┐рди рдореИрдВ @derekperkins рдХреЛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд╕реБрдЭрд╛рд╡ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдЧрдпрд╛ред

рдХреНрдпрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдиреЗ рд╕реЗ рд╣рдо рдЗрд╕ "рд╕реНрдкрд╖реНрдЯ" рдпреЛрдЧреНрдпрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ? рдпрджрд┐ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдордирдорд╛рдирд╛ рдорд╛рди рдХреЛ "рд╕реНрдкрд╖реНрдЯ" рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдмрджрд▓рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдм рдЗрд╕ рдмрд╛рдд рдХреА рдХреЛрдИ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ рдХрд┐ рджрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рди рдЕрдм рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкреНрд░рдЧрдгрд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдЖрдХрд╕реНрдорд┐рдХ рдпрд╛ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╕рд╡рд╛рд▓ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рд╕реНрдкрд╖реНрдЯ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ "рдЬрд╛рдиреЗ рдХреА рднрд╛рд╡рдирд╛" рдореЗрдВ рд╣реИред рд╕реНрдкрд╖реНрдЯ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛, рдХреЛрдб рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдПрдХ рдмрдбрд╝рд╛ рдХрджрдо рдЙрдард╛ рд░рд╣рд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЧреЛ рдмрд╛рдж рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реБрдЦ рдЕрдкрдирд╛ рд░рд╣рд╛ рд╣реИред

@griesemer @Merovius рдореИрдВ рдлрд┐рд░ рд╕реЗ @ianlancetaylor рдХреЗ рдЙрджреНрдзрд░рдг рдХреЛ рджреЛрдмрд╛рд░рд╛ рдкреЛрд╕реНрдЯ рдХрд░реВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрдирдХрд╛ рд╕реБрдЭрд╛рд╡ рдерд╛, рдореЗрд░рд╛ рдирд╣реАрдВред

рдореИрдВ рдХреБрдЫ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреЛ рдордирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЛ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд░реАрдХреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЛ рддреИрдпрд╛рд░ рд╣реВрдВ

@rogpeppe рдФрд░ @Merovius рджреЛрдиреЛрдВ рд╣реА рдкреНрд░рднрд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдЪреНрдЫреА рдмрд╛рддреЗрдВ рд╕рд╛рдордиреЗ рд▓рд╛рддреЗ рд╣реИрдВред рд╕реНрдкрд╖реНрдЯ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рд▓реЗрдХрд┐рди рдирд┐рд╣рд┐рдд рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреЛ рдорд╛рдиреНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдЧрд╛рд░рдВрдЯреА рдХреЗ рдореБрджреНрджреЗ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдЦреЛрдирд╛ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрд╣рд▓реВ рд╣реЛрдЧрд╛ред

рдпрд╣рд╛рдБ рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рдмрд╣реБрдд рдХреБрдЫ рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рдЕрдЪреНрдЫреЗ рд╡рд┐рдЪрд╛рд░ рдЖрдП рд╣реИрдВред рдпрд╣рд╛рдВ рдПрдХ рд╕рд╛рд░рд╛рдВрд╢ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬреЛ рдореИрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ (рдпрд╛ рдХреБрдЫ рдЗрд╕реА рддрд░рд╣), рдЬреЛ рдХреБрдЫ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдиреЗ рдЬреЛ рдХрд╣рд╛ рд╣реИ, рдЙрд╕рдХреЗ рд╕рд╛рде рд╕рдВрд░реЗрдЦрд┐рдд рд▓рдЧрддрд╛ рд╣реИред рдореИрдВ рдЦреБрд▓реЗ рддреМрд░ рдкрд░ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдПрдХ рднрд╛рд╖рд╛ рдбрд┐рдЬрд╛рдЗрдирд░ рдпрд╛ рд╕рдВрдХрд▓рдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред

  1. Enums рдХреЗрд╡рд▓ рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░реЛрдВ (рд╕реНрдЯреНрд░рд┐рдВрдЧ, uint, int, rune, рдЖрджрд┐) рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИрдВред рдпрджрд┐ рдХреЛрдИ рдЖрдзрд╛рд░ рдкреНрд░рдХрд╛рд░ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ uint рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?
  2. Enum рдХреЗ рд╕рднреА рдорд╛рдиреНрдп рдорд╛рдиреЛрдВ рдХреЛ рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛ рдХреЗ рд╕рд╛рде рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП - рд╕реНрдерд┐рд░рд╛рдВрдХред рдЕрдорд╛рдиреНрдп (рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛ рдореЗрдВ рдШреЛрд╖рд┐рдд рдирд╣реАрдВ) рдорд╛рдиреЛрдВ рдХреЛ рдПрдирдо рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
  3. рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ (рдЕрдЪреНрдЫрд╛ рд╣реИ)ред
  4. Enum рдкрд░ рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рдердХрд╛рд╡рдЯ рдХреЗ рд▓рд┐рдП рд╕рдВрдХрд▓рди-рд╕рдордп рдХреА рдЬрд╛рдБрдЪред рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ ( go vet ? рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдПрдХ default рдорд╛рдорд▓реЗ рдХреА рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░реЗрдВ, рднрд▓реЗ рд╣реА рднрд╡рд┐рд╖реНрдп рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрдкреВрд░реНрдг (рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд╕рдВрднрд╛рд╡рдирд╛) рд╣реЛред
  5. рд╢реВрдиреНрдп рдорд╛рди рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЕрдорд╛рдиреНрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдПрдирдо рдШреЛрд╖рдгрд╛ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ)ред рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ nil рд╣реЛрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛, рдЬреИрд╕реЗ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рдХрд░рддрд╛ рд╣реИред

рд╡рд╣ рдЖрдЦрд┐рд░реА рд╡рд╛рд▓рд╛ _may_ рдереЛрдбрд╝рд╛ рд╡рд┐рд╡рд╛рджрд╛рд╕реНрдкрдж рд╣реЛред рдФрд░ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╢рдмреНрджрд╛рд░реНрде рдореЗрдВ рдлрд┐рдЯ рд╣реЛрдЧрд╛ - рдмрд╣реБрдд рдХреБрдЫ рдЬреИрд╕реЗ рдХреЛрдИ nil рд╕реНрд▓рд╛рдЗрд╕ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдЧрд╛, рдХреЛрдИ nil рдХреЗ рд▓рд┐рдП рдЪреЗрдХ рдореЗрдВ рдбрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ

рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛрдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд╛ рд╕рд╡рд╛рд▓ рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдореИрдВ рдХрднреА рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред

рдЗрд╕реЗ рдХреИрд╕реЗ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ:

type MetadataBlockType enum[uint] {
    StreamInfo:    0
    Padding:       1
    Application:   2
    SeekTable:     3
    VorbisComment: 4
    CueSheet:      5
    Picture:       6
}

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдФрд░ "рдбреЙрдЯ рд╕рд┐рдВрдЯреИрдХреНрд╕" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕реНрд╡рд┐рдлреНрдЯ рд╢реИрд▓реА _nice_ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред

EnumA int . рдЯрд╛рдЗрдк рдХрд░реЗрдВ
рд╕реНрдерд┐рд░рд╛рдВрдХ (
рдЕрдЬреНрдЮрд╛рдд EnumA = iota
рдПрдПрдП
)


EnumB int . рдЯрд╛рдЗрдк рдХрд░реЗрдВ
рд╕реНрдерд┐рд░рд╛рдВрдХ (
рдЕрдЬреНрдЮрд╛рдд EnumB = iota
рдмреАрдмреАрдмреА
)

рдХреЛрдб рдХреЗ 2 рдЯреБрдХрдбрд╝реЗ рдПрдХ рд╣реА рдЧреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рди рд╣реА рдПрдХ рд╣реА рдкреИрдХреЗрдЬ, рдФрд░ рди рд╣реА рдПрдХ рджреВрд╕рд░реЗ рдкреИрдХреЗрдЬ рд╕реЗ рдЖрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреГрдкрдпрд╛ Enum рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ C# рддрд░реАрдХреЗ рдХреЛ рд▓рд╛рдЧреВ рдХрд░реЗрдВ:
рдЯрд╛рдЗрдк рдбреЗрдЬ рдПрдирдо {рд╢рдирд┐, рд╕реВрд░реНрдп, рд╕реЛрдо, рдордВрдЧрд▓, рдмреБрдз, рдЧреБрд░реБ, рд╢реБрдХреНрд░}
рдЯрд╛рдЗрдк рдбреЗрдЬ рдПрдирдо [рдЗрдВрдЯ] { рд╢рдирд┐: 1 , рд╕реВрд░реНрдп, рдордВрдЧрд▓, рдмреБрдз, рдЧреБрд░реБ, рд╢реБрдХреНрд░}
рдЯрд╛рдЗрдк рдбреЗрдЬрд╝ рдПрдирдо [рд╕реНрдЯреНрд░рд┐рдВрдЧ] {рд╢рдирд┐: "рд╢рдирд┐рд╡рд╛рд░", рд╕реВрд░реНрдп: "рд░рд╡рд┐рд╡рд╛рд░" рдЖрджрд┐}

@KamyarM рдпрд╣ рдХреИрд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ

type Days int
const (
  Sat Days = 1+iota
  Sun
  ...
)

рддрдерд╛

type Days string
const (
  Sat Days = "Saturday"
  Sun      = "Sunday"
  ...
)

рдореИрдВ рдХреГрдкрдпрд╛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рдирдП рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ/рддрд░реНрдХреЛрдВ рддрдХ рд╕реАрдорд┐рдд рд░рдЦрдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧреЛрдВ рдиреЗ рдЗрд╕ рдзрд╛рдЧреЗ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реА рд╣реИ рдФрд░ рд╢реЛрд░/рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдЬреЛрдбрд╝рдирд╛ рдЙрдирдХреЗ рд╕рдордп рдФрд░ рдзреНрдпрд╛рди рдХрд╛ рдЕрдирд╛рджрд░ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдкрд┐рдЫрд▓реА рджреЛрдиреЛрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╡рд┐рд╕реНрддреГрдд рдЙрддреНрддрд░реЛрдВ рд╕рд╣рд┐рдд, рд╡рд╣рд╛рдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдЪрд░реНрдЪрд╛рдПрдВ рд╣реИрдВред рдЖрдк рдХрд╣реА рдЧрдИ рд╣рд░ рдмрд╛рдд рд╕реЗ рд╕рд╣рдордд рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ рдФрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдкрдХреНрд╖ рдЙрд╕ рдЪрд░реНрдЪрд╛ рдХреЗ рдЕрдм рддрдХ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдкрд╕рдВрдж рди рдХрд░реЗ - рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЗрд╕реЗ рдЕрдирджреЗрдЦрд╛ рдХрд░рдиреЗ рд╕реЗ рдЗрд╕реЗ рдЙрддреНрдкрд╛рджрдХ рджрд┐рд╢рд╛ рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓реЗрдЧреАред

рдпрд╣ рдмреЗрд╣рддрд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдирд╛рдордХрд░рдг рд╡рд┐рд╡рд╛рдж рдХрд╛ рдореБрджреНрджрд╛ рдирд╣реАрдВ рд╣реИред рд╕рдВрдХрд▓рдХ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рдХрд╛ рднреА рд╕рдорд░реНрдерди рдХрд░реЗрдВред рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдиреЗ рдЗрд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╕реЗ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрдХрд▓рдХ рдЖрдкрдХреЛ рдЙрд╕ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЗрд╕реЗ рдЕрд╕рд╛рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдк рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рджрд┐рди рдирд╣реАрдВ рд╣реИ:
рд╡рд░ рдПрдХ рджрд┐рди
рдП = 10
рдХрдВрдкрд╛рдЗрд▓рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рддреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдирдо рдХрд╛ рдЬреНрдпрд╛рджрд╛ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ GoLand рдЬреИрд╕реЗ IDE рдореЗрдВ рдмреЗрд╣рддрд░ рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реИ

рдореИрдВ рдХреБрдЫ рдРрд╕рд╛ рджреЗрдЦрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛

type WeekDay enum string {
  Monday "mon"
  Tuesday "tue"
  // etc...
}

рдпрд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд iota рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде:

// this assumes that iota automatically assigned to the first declared enum key
// and values have unsigned integer type
// value is positional, so if you decide to rename your key 
// you don't have to change everything in db
// also it is easy to grow your lists
type WeekDay enum {
  Monday
  Tuesday
}

рдпрд╣ рдЙрдкрдпреЛрдЧ рдореЗрдВ рд╕рд░рд▓рддрд╛ рдФрд░ рд╕реБрдЧрдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛:

func makeItWorkOn(day WeekDay) {
  // your implementation
}

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдирдо рдореЗрдВ рдореВрд▓реНрдп рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдЯрд┐рди рд╡рд┐рдзрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рддрд╛рдХрд┐ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдирдкреБрдЯ рд╕реЗ рдХреБрдЫ рдорд╛рдиреНрдп рдХрд░ рд╕рдХреЗрдВ:

if day in WeekDay {
  makeItWorkOn(day)
}

рдФрд░ рд╕рд╛рдзрд╛рд░рдг рдЪреАрдЬреЗрдВ рдЬреИрд╕реЗ:

if day == WeekDay.Monday {
 // whatever
}

рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛ (KISS):

// type automatically inferred from values or `iota`
enum WeekDay {
  Monday "mon"
  Tuesday "tue"
}

@zoonman рдЕрдВрддрд┐рдо рдЙрджрд╛рд╣рд░рдг рдЧреЛ рдХреЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдкрд╛рд▓рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ: рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдШреЛрд╖рдгрд╛ func рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдШреЛрд╖рдгрд╛ type рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рдПрдХ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдШреЛрд╖рдгрд╛ var рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ ,...

@ md2perpe рдореИрдВ рдЧреЛ "рдЯрд╛рдЗрдк" рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рд╣рд░ рд░реЛрдЬ рдХреЛрдб рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╕рд┐рджреНрдзрд╛рдВрдд рдХрд╛ рдкрд╛рд▓рди рдХрд░рддрд╛ рд╣реВрдВ - рдЪреАрдЬреЛрдВ рдХреЛ рд╕рд░рд▓ рд░рдЦреЗрдВред
рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рдХреЛрдб рдЖрдкрдХреЛ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ _рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛_ рддрдм рдЕрдзрд┐рдХ рд╕рдордп рдмрд░реНрдмрд╛рдж рд╣реЛрддрд╛ рд╣реИред
рдЯреАрдмреАрдПрдЪ рдореИрдВ рдиреМрд╕рд┐рдЦрд┐рдпрд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдРрд╕реА рдмрд╣реБрдд рд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬрд┐рдирдХреА рдореИрдВ рдЖрд▓реЛрдЪрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

struct User {
  Id uint
  Email string
}

рд▓рд┐рдЦрдиреЗ рдФрд░ рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реИ

type User struct {
  Id uint
  Email string
}

рдореИрдВ рдЖрдкрдХреЛ рдЙрджрд╛рд╣рд░рдг рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП:

// this is terrible because it blows your mind off
// especially if you Go newbie
// this should not be allowed by compiler/linter:
w := map[string]interface{}{"type": 0, "connected": true}

// it has to be splitted into type definition
type WeirdJSON map[string]interface{}

// and used like
w := WeirdJSON{"type": 0, "connected": true}

рдореИрдВ Asm, C, C++, Pascal, Perl, PHP, Ruby, Python, JavaScript, TypeScript, рдЕрдм Go рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦрддрд╛ рдерд╛ред рдореИрдВрдиреЗ рд╡рд╣ рд╕рдм рджреЗрдЦрд╛ред рдпрд╣ рдЕрдиреБрднрд╡ рдореБрдЭреЗ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреЛрдб рд╕рдВрдХреНрд╖рд┐рдкреНрдд, рдкрдврд╝рдиреЗ рдФрд░ рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП ред

рдореИрдВ рдХреБрдЫ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реВрдВ рдФрд░ MIDI рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╡рд╣рд╛рдВ рдореБрдЭреЗ SMPTE рдЯрд╛рдЗрдордХреЛрдб рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореБрдЭреЗ iota рдХреЗ рд╕рд╛рде рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рддрд░реАрдХреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд╛рдлреА рдХрдард┐рди рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдореБрдЭреЗ рд░реЛрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)

const (
        SMTPE0 int8 = ((-24 - (1 + (iota - 1) * 3) % 6 * (iota - 1) / ((iota - 1) | 0x01)) - 10 * ((iota - 1) % 2) - 5 * (iota / 3 - iota / 4) ) * iota / (iota | 0x01)
    SMTPE24 
    SMTPE25
    SMTPE29
    SMTPE30
)
const (
   _SMTPE0 int8 = 0 
   _SMTPE24 int8 = -24
   _SMTPE25 int8 = -25
   _SMTPE29 int8 = -29
   _SMTPE30 int8 = -30
)

рдмреЗрд╢рдХ рдореБрдЭреЗ рд░рдХреНрд╖рд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдХреБрдЫ рд░рдирдЯрд╛рдЗрдо рдЪреЗрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ ...

func IsSMTPE(status int8) bool {
    j := 4
    for i:= 0; i >= -30; i -= j % 6{
        if i == int(status){ 
            return true
        }
        j+=3
    }

    return status == 0
}

рдЦреЗрд▓ рдХрд╛ рдореИрджрд╛рди рд░реЗрдлрд░реА

Enums рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рд╕рд░рд▓ рдмрдирд╛рддреЗ рд╣реИрдВред Enums рд╕рд┐рд░реНрдл рдПрдХ рдЙрдкрдХрд░рдг рд╣реИ рддреЛ рдЖрдк рдЗрд╕реЗ рдареАрдХ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╣ рд╕рдордп рдХреА рдмрдЪрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдмрдврд╝рд╛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЧреЛ 2 рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ рдЬреИрд╕реЗ рд╕реА ++, рд╕реА # рдпрд╛ рдЕрдиреНрдп рд▓реИрдВрдЧреНрд╕ рдореЗрдВред рдпрд╣ рдЙрджрд╛рд╣рд░рдг рд╕рд┐рд░реНрдл рдПрдХ рдордЬрд╛рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рджрд┐рдЦрд╛рддрд╛ рд╣реИред

@ рд╕реНрдЯреНрд░реАрдЯрд░ 12 рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдЖрдкрдХрд╛ рдЙрджрд╛рд╣рд░рдг "рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рджрд┐рдЦрд╛рддрд╛ рд╣реИ"ред рдПрдирдо рдЗрд╕ рдХреЛрдб рдХреЛ рдХреИрд╕реЗ рдмреЗрд╣рддрд░ рдпрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рдмрдирд╛рдПрдВрдЧреЗ?

рдПрдирдо рдХреЗ рд╕рдорд╛рди рддрд░реНрдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рд╕реА # рд╡рд░реНрдЧ рд╣реИред

 public enum SMTPE : sbyte
   {
        SMTPE0 = 0,
        SMTPE24 = -24,
        SMTPE25 = -25,
        SMTPE29 = -29,
        SMTPE30 = -30
   }

   public class TestClass
   {
        public readonly SMTPE smtpe;

        public TestClass(SMTPE smtpe)
        {
            this.smtpe = smtpe;
        }
   } 

рд╕рдВрдХрд▓рди рд╕рдордп рдХреЗ рд╕рд╛рде рдореИрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдБ:

  1. рдХреЛрдИ рд░рдирдЯрд╛рдЗрдо рдЪреЗрдХ рдирд╣реАрдВ рд╣реИред
  2. рдЯреАрдо рджреНрд╡рд╛рд░рд╛ рддреНрд░реБрдЯрд┐ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд░реВрдк рд╕реЗ рдХрдо рдХрд░реЗрдВ (рдЖрдк рд╕рдВрдХрд▓рди рд╕рдордп рдореЗрдВ рдЧрд▓рдд рдорд╛рди рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ)ред
  3. рдпрд╣ рдЖрдИрдУрдЯрд╛ рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рд╡рд┐рдкрд░реАрдд рдирд╣реАрдВ рд╣реИред
  4. рддрд░реНрдХ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд╛рдо рд╣реИ (рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЖрдк рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреБрдЫ рдирд┐рдореНрди рд╕реНрддрд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдорд╛рдиреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВ)ред
  5. рдореВрд▓реНрдпреЛрдВ рдХрд╛ рд╕рд░рд▓ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдк ToString() рд╡рд┐рдзрд┐ рдЕрдиреБрд░реВрдк рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред (CONNECTION_ERROR.NO_INTERNET 0x12 рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ)ред рдореИрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдПрдирдо рдХреЗ рд╕рд╛рде рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рдХреЛрдб рдкреАрдврд╝реА рдирд╣реАрдВ рд╣реИред
  6. рдХреБрдЫ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдЖрдк рдореВрд▓реНрдпреЛрдВ, рд╢реНрд░реЗрдгреА рдФрд░ рдЖрджрд┐ рдХреА рд╕рд░рдгреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  7. рдХреЛрдб рдкрдврд╝рддреЗ рд╕рдордп рдЗрд╕реЗ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реИ (рд╕рд┐рд░ рдореЗрдВ рдЧрдгрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)ред

рдЖрдЦрд┐рд░рдХрд╛рд░ рдпрд╣ рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдирд╡реАрдп рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд░реЛрдХрдиреЗ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рд░реНрдл рдПрдХ рдЙрдкрдХрд░рдг рд╣реИред

@streeter12 рдЖрдкрдХрд╛ рдорддрд▓рдм рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдпрд╣рд╛рдВ рдЧреЛ рд╕реНрдерд┐рд░рд╛рдВрдХ рдкрд░ рдПрдХрдорд╛рддреНрд░ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдИ рдЕрдорд╛рдиреНрдп рдорд╛рди рдирд╣реАрдВ рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдХрд┐рд╕реА рдЕрдиреНрдп рдорд╛рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдмрд▓реНрдХрд┐ рдПрдирдо рдорд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдХреАрдордд рдкрд░ рднреА рдЖрддрд╛ рд╣реИ: рдЗрд╕ рдХреЛрдб рдХреЗ рдмрд╛рд╣рд░ рдЗрд╕ рдПрдирдо рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдмрд╛рд╣рд░реА рдПрдирдо рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдПрдХ рдкреНрд░рдореБрдЦ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЧреЛ рдореЗрдВ рд╣рдордиреЗ рдорд╛рдирдХ рдПрдирдо рдХреЗ рдЦрд┐рд▓рд╛рдл рдлреИрд╕рд▓рд╛ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ред

рдХреБрдЫ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рд╕рд░рд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдЙрддреНрддрд░ рджреЗрдВ, рдПрдирдо рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред
рдПрдлрдИ рдХреЛ рдПрдирдо рдХреЗ рдмрдЬрд╛рдп рд░рд╛рдЬреНрдп рдорд╢реАрди рдХрд╛ рдЙрдкрдпреЛрдЧ рд░рд╛рдЬреНрдп рдкреИрдЯрд░реНрди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

Enums рдХрд╛ рдЕрдкрдирд╛ рджрд╛рдпрд░рд╛ рд╣реИред рдореИрдВ рдХреБрдЫ рдмрдбрд╝реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдПрдирдо рдХреЗ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реВрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛрдб рдХреЗ рдмрд╛рд╣рд░ рдПрдирдо рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднрдпрд╛рдирдХ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдирд┐рд░реНрдгрдп рд╣реИред рдЖрдкрдХрд╛ рдЙрд╕ рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдкрдХрд╛ рд╕рд╣рдХрд░реНрдореА рдХрд░ рд░рд╣рд╛ рд╣реИ рдФрд░ рдпрд╣ рдХреБрдЫ рдордЬрд╝реЗрджрд╛рд░ рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдХрд░рддрд╛ рд╣реИ)

рдФрд░ рдЖрдк рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдорд╛рдирд╡реАрдп рдХрд╛рд░рдХреЛрдВ рдХреЛ рднреВрд▓ рдЧрдП рд╣реИрдВ, рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХрдо рдХрд░рддреЗ рд╣реИрдВред

@ рд╕реНрдЯреНрд░реАрдЯрд░ 12 рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдХреНрд╕рд░ рдПрдирдореЛрдВ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

@griesemer рдПрдХ рдПрдирдо/рдпреЛрдЧ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдПрдХ рдЕрд▓рдЧ рдФрд░ рдХрднреА-рдХрднреА-рдЕрд╕рдВрдЧрдд рдкреНрд░рдХрд╛рд░ рдмрдирд╛рддрд╛ рд╣реИред

рдпрд╣ рдЕрднреА рднреА рдЧреЛ рдореЗрдВ рд╕рдЪ рд╣реИ, рднрд▓реЗ рд╣реА рдПрдирдо/рд░рд╛рд╢рд┐ рдХреЗ рд▓рд┐рдП рд╕реНрдкрд╖реНрдЯ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкреИрдХреЗрдЬ рдореЗрдВ "рдПрдирдо рдкреНрд░рдХрд╛рд░" рд╣реИ рдЬреЛ {1, 2, 3} рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдк рдЗрд╕реЗ рдЕрдкрдиреЗ "рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдПрдирдо рдкреНрд░рдХрд╛рд░" рд╕реЗ 4 рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдиреЗ рдЕрднреА рднреА рдирд┐рд╣рд┐рдд "рдкреНрд░рдХрд╛рд░" рдХреЗ рдЕрдиреБрдмрдВрдз рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рд╣реИред

рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рдПрдирдо / рдпреЛрдЧ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд░реВрдкрд╛рдВрддрд░рдг рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ / рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬреЛ рдХрднреА-рдХрднреА-рдЕрд╕рдВрдЧрдд рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрд╕ рддрд░реНрдХ рдФрд░ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдпрд╛ # 19412 рдЬреИрд╕реЗ рд╕рдорд╛рди рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ рд╡реНрдпрд╛рдкрд╛рд░ рдмрдВрдж "рд╣рдореЗрд╢рд╛ рдореВрд▓ рд╕рддреНрдпрд╛рдкрди рдХреЛрдб рд▓рд┐рдЦреЗрдВ рдЬрд┐рд╕реЗ рд╕рдВрдХрд▓рдХ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ" рдХреЗ рдмрдЬрд╛рдп "рдХрднреА-рдХрднреА рд░реВрдкрд╛рдВрддрд░рдг рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВ рдЬреЛ рдЖрдк ' рдлрд┐рд░ рд╢рд╛рдпрдж рд╡реИрд╕реЗ рднреА рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛"ред

рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдкрдХреНрд╖ рд╕рд╣реА рд╣реИ рдпрд╛ рдЧрд▓рдд рдпрд╛ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХрдорд╛рддреНрд░ рд╡реНрдпрд╛рдкрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЙрди рдкрдХреНрд╖реЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдореЗрдВ рдПрдХ рдмрд╛рдзрд╛ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ рдЬреЛ рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрд╕ рддрд░реНрдХ рдФрд░ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдпрд╛ # 19412 рдЬреИрд╕реЗ рд╕рдорд╛рди рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ рд╡реНрдпрд╛рдкрд╛рд░ рдмрдВрдж "рд╣рдореЗрд╢рд╛ рдореВрд▓ рд╕рддреНрдпрд╛рдкрди рдХреЛрдб рд▓рд┐рдЦреЗрдВ рдЬрд┐рд╕реЗ рд╕рдВрдХрд▓рдХ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ" рдХреЗ рдмрдЬрд╛рдп "рдХрднреА-рдХрднреА рд░реВрдкрд╛рдВрддрд░рдг рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВ рдЬреЛ рдЖрдк ' рдлрд┐рд░ рд╢рд╛рдпрдж рд╡реИрд╕реЗ рднреА рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛"ред

рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдмрддрд╛рдпрд╛

@jimmyfrasche рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореИрдВ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЯреНрд░реЗрдбрдСрдлрд╝ рдХрд╛ рд╡рд░реНрдгрди рдХреИрд╕реЗ рдХрд░реВрдВрдЧрд╛ред рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ "рд╣рдореЗрд╢рд╛ рдореВрд▓ рд╕рддреНрдпрд╛рдкрди рдХреЛрдб рд▓рд┐рдЦрддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕рдВрдХрд▓рдХ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ" рдмрдирд╛рдо "рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдХ рдкреВрд░реА рдирдИ рдЕрд╡рдзрд╛рд░рдгрд╛ рдЬреЛрдбрд╝реЗрдВ рдЬрд┐рд╕реЗ рдЧреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХреЛ рд╕реАрдЦрдиреЗ рдФрд░ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред"

рдпрд╛, рдореБрдЭреЗ рдЗрд╕реЗ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рд░рдЦрдиреЗ рджреЗрдВред рдЬрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдореИрдВ рдХрд╣ рд╕рдХрддрд╛ рд╣реВрдВ, рдЧреЛ рдХреЗ рдПрдиреНрдпреВрдорд░реЗрдЯреЗрдб рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдЧрд╛рдпрдм рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдПрдХрдорд╛рддреНрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рд╕реЗ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХрд╛ рдХреЛрдИ рд╕рддреНрдпрд╛рдкрди рдирд╣реАрдВ рд╣реИ, рд╕реНрдкрд╖реНрдЯ рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдкрд░ рдХреЛрдИ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдХреЛрдИ рдЬрд╛рдВрдЪ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рднреА рдорд╛рдиреЛрдВ рдХреЛ рдПрдХ рдореЗрдВ рд╕рдВрднрд╛рд▓рд╛ рдЧрдпрд╛ рдерд╛ рд╕реНрд╡рд┐рдЪред рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдкреНрд░рдЧрдгрд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдзрд╛рд░рдгрд╛ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВред рд╣рдореЗрдВ рдЗрд╕ рддрдереНрдп рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдкреНрд░рдЧрдгрд┐рдд рдкреНрд░рдХрд╛рд░ рд╣реИрдВ рдЬреЛ рд╣рдореЗрдВ рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдЧреЛ рдХреЛ рднреА рдкреНрд░рдЧрдгрд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рд╛рдВ, рдкреНрд░рдЧрдгрд┐рдд рдкреНрд░рдХрд╛рд░ рд╣рдореЗрдВ рд╡реЗ рд▓рд╛рдкрддрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рджреЗрдВрдЧреЗред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд┐рд▓реНрдХреБрд▓ рдирдП рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдЬреЛрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ? рдФрд░ рдХреНрдпрд╛ рднрд╛рд╖рд╛ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд▓рд╛рдн рдХреЗ рд▓рд╛рдпрдХ рд╣реИ?

@ianlancetaylor рднрд╛рд╖рд╛ рдореЗрдВ рдЬрдЯрд┐рд▓рддрд╛ рдЬреЛрдбрд╝рдирд╛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡реИрдз рдмрд╛рдд рд╣реИ, рдФрд░ "рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдореЗрдВ рдпрд╣ рд╣реИ" рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рддрд░реНрдХ рдирд╣реАрдВ рд╣реИред рдореИрдВ, рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдирд╣реАрдВ рд╕реЛрдЪрддрд╛ рдХрд┐ рдПрдирдо рдкреНрд░рдХрд╛рд░ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╣реИрдВред (рдЙрдирдХрд╛ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг, рдпреЛрдЧ рдХреЗ рдкреНрд░рдХрд╛рд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмреЙрдХреНрд╕ рдкрд░ рдЯрд┐рдХ рдХрд░реЗрдВ)ред

рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рд╕реЗ рдСрдкреНрдЯ рдЖрдЙрдЯ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХрд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рддрдирд╛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ рдЬреЛ рдХрд┐ рдЖрджрд┐рдо рдХреЗ рдмрд╛рд╣рд░ рд╣реЛрдЧрд╛ред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ "рдПрдХ рд╕реНрд╡рд┐рдЪ рдореЗрдВ рд╕рдВрднрд╛рд▓реЗ рдЧрдП рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ" рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд┐рддрдиреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рд╕рдВрдХрд▓рдХ рдХреЛ рдХрд╛рдиреВрдиреА рдореВрд▓реНрдпреЛрдВ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдЬрд╛рдирдиреЗ рдХреЗ рдХрд┐рд╕реА рднреА рддрд░реАрдХреЗ рдХреЗ рдмрд┐рдирд╛ред рдПрдирдо рдФрд░ рдпреЛрдЧ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реВрдВ, рд╡рд╣ рд╣реИ рдПрдбрд╛ рдХреА рд╢реНрд░реЗрдгреА рдХреЗ рдкреНрд░рдХрд╛рд░, рд▓реЗрдХрд┐рди рд╡реЗ рд╢реВрдиреНрдп рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ 0 рд░реЗрдВрдЬ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдЬрдм рднреА рд╡реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдпрд╛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рддреЛ рдСрдлрд╕реЗрдЯ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИред рдХреЗ рдКрдкрд░ред (рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕рдорд╛рди рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░рд┐рд╡рд╛рд░ рд╣реЛрддреЗ рд╣реИрдВ, рдХреБрдЫ рдкрд╛рд╕реНрдХрд▓ рдкрд░рд┐рд╡рд╛рд░ рдореЗрдВ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдордп рдХреЗрд╡рд▓ рдПрдбрд╛ рд╣реА рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддрд╛ рд╣реИ)

рд╡реИрд╕реЗ рднреА, рдореИрдВ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдЬрд┐рдХреНрд░ рдХрд░ рд░рд╣рд╛ рдерд╛:

рдпрд╣рд╛рдВ рдЧреЛ рд╕реНрдерд┐рд░рд╛рдВрдХ рдкрд░ рдПрдХрдорд╛рддреНрд░ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрдИ рдЕрдорд╛рдиреНрдп рдорд╛рди рдирд╣реАрдВ рдкреЗрд╢ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдХрд┐рд╕реА рдЕрдиреНрдп рдорд╛рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдмрд▓реНрдХрд┐ рдПрдирдо рдорд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░реЗрдЧрд╛ред рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдХреАрдордд рдкрд░ рднреА рдЖрддрд╛ рд╣реИ: рдЗрд╕ рдХреЛрдб рдХреЗ рдмрд╛рд╣рд░ рдЗрд╕ рдПрдирдо рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдмрд╛рд╣рд░реА рдПрдирдо рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдПрдХ рдкреНрд░рдореБрдЦ рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЧреЛ рдореЗрдВ рд╣рдордиреЗ рдорд╛рдирдХ рдПрдирдо рдХреЗ рдЦрд┐рд▓рд╛рдл рдлреИрд╕рд▓рд╛ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ред

рддрдерд╛

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЕрдХреНрд╕рд░ рдПрдирдореЛрдВ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрддрд╛рдП рдЧрдП рдХрд╛рд░рдгреЛрдВ рд╕реЗ рд╡рд╣ рддрд░реНрдХ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

@jimmyfrasche рд╕рдордЭ рдЧрдпрд╛; рдпрд╣ рдПрдХ рдХрдард┐рди рд╕рдорд╕реНрдпрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЧреЛ рдореЗрдВ рд╣рдордиреЗ рдЗрд╕реЗ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХреА рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХреЗрд╡рд▓ рдирд┐рд░рдВрддрд░ рдореВрд▓реНрдп рдХреЛ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рд╕рд╛рде рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдЕрдиреБрдХреНрд░рдореЛрдВ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрдВрддреНрд░ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ред

(рджреЗрд░реА рд╕реЗ рднреЗрдЬрд╛ рдЧрдпрд╛ - https://github.com/golang/go/issues/19814#issuecomment-349158748 рдкрд░ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдерд╛)

@griesemer рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдФрд░ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЧреЛ 1 рдХреЗ рд▓рд┐рдП рд╕рд╣реА рдХреЙрд▓ рдерд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рд╕реЗ рдХреБрдЫ рдЧреЛ 2 рдХреЗ рд▓рд┐рдП рдкреБрдирд░реНрдореВрд▓реНрдпрд╛рдВрдХрди рдХреЗ рд▓рд╛рдпрдХ рд╣реИред

_рд▓рдЧрднрдЧ_ рд╕рдм рдХреБрдЫ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднрд╛рд╖рд╛ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдЬреЛ рдХреЛрдИ рднреА рдПрдирдо рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рдмрд╛рд╣рд░ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдЧрд╛ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЬрдирд░реЗрдЯрд░ рдЗрд╕рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЛ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рдЖрдкрдХреЛ рдПрдирдо рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рд╡рд╛рд▓реА рд╢рдХреНрддрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЬрд┐рддрдирд╛ рд╣реЛ рд╕рдХреЗ рдЙрддрдирд╛ рдХрдо рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред

рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг https://play.golang.org/p/7ud_3lrGfx рдЖрдкрдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рдм рдХреБрдЫ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ

  1. рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреИрдХреЗрдЬ рдХреЗ рднреАрддрд░ рд╕реБрд░рдХреНрд╖рд╛
  2. рдкреВрд░реНрдгрддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡рд┐рдЪ рдХреЛ рд▓рд┐рдВрдЯ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛

рдЙрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдЫреЛрдЯреЗ, рд╕рд░рд▓ рдпреЛрдЧ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдЕрдЬреАрдм рд╣реИ, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ https://github.com/golang/go/issues/19412#issuecomment -323208336 рдЬреИрд╕рд╛ рдХреБрдЫ рд╣реЛрдЧрд╛ рднрд╛рд╖рд╛ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рджреНрд╡рд╛рд░рд╛ рдПрдирдо рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╕рдорд╕реНрдпрд╛рдУрдВ 1 рдФрд░ 2 рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВред

рдЬреЗрд╕рди рдХреЗ рдПрдХ рд╕реНрдХреЗрдЪ рдХреЗ рд▓рд┐рдП https://play.golang.org/p/YFffpsvx5e рджреЗрдЦреЗрдВред рдЗрд╕ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд╕рд╛рде рдЯреЛрдХрди

рд╣рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ рд╡реНрдпрд╛рдкрд╛рд░ рдмрдВрдж "рд╣рдореЗрд╢рд╛ рдореВрд▓ рд╕рддреНрдпрд╛рдкрди рдХреЛрдб рд▓рд┐рдЦреЗрдВ рдЬреЛ рд╕рдВрдХрд▓рдХ рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ" рдХреЗ рдмрдЬрд╛рдп "рдХрднреА-рдХрднреА рд░реВрдкрд╛рдВрддрд░рдг рдлрд╝рдВрдХреНрд╢рди рд▓рд┐рдЦреЗрдВ рдЬреЛ рдЖрдкрдХреЛ рд╢рд╛рдпрдж рд╡реИрд╕реЗ рднреА рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛"ред

рдореЗрд░реЗ рд▓рд┐рдП - рдХреНрд░рдорд┐рдХ рдорд░рдореНрдордд рдХреЗ рдЙрдЧреНрд░ рд╕рдорд░реНрдердХреЛрдВ рдХреЗ рд╢рд┐рд╡рд┐рд░ рдХрд╛ рдПрдХ рдкреНрд░рддрд┐рдирд┐рдзрд┐ - рдпрд╣ рд╕рд╣реА (рдИрд╢) рдЯреНрд░реЗрдбрдСрдлрд╝ рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рднрд▓реЗ рд╣реА рд╣рдо рдХреНрд░рдорд┐рдХ рдорд░рдореНрдордд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реЛрдВ, рдореИрдВ рдЗрд╕реЗ рдПрдХ рдмреЗрд╣рддрд░ рдорд╛рдирд╕рд┐рдХ рдореЙрдбрд▓ рдорд╛рдиреВрдВрдЧрд╛ред

рдПрдХ рдХреЗ рд▓рд┐рдП, рдЯрд╛рдЗрдк-рдЪреЗрдХ рдХрд┐рдП рдЧрдП рдПрдирдо рдХреЗрд╡рд▓ рд╡реИрд╕реЗ рднреА рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдбрд╛рд▓реЗ рдЧрдП рдорд╛рдиреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред рдпрджрд┐ рдПрдирдо рдПрдХ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдпрд╛рддреНрд░рд╛ рдХрд░рддрд╛ рд╣реИ, рдбрд┐рд╕реНрдХ рдкрд░ рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИ рдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рднреА рджрд╛рдВрд╡ рдмрдВрдж рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ (рдФрд░ рдПрдирдо рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЙрдкрдпреЛрдЧ рдЗрд╕ рд╢реНрд░реЗрдгреА рдореЗрдВ рдЖрддреЗ рд╣реИрдВ)ред рддреЛ рдЖрдк рд╡реИрд╕реЗ рднреА рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЕрд╕рдВрдЧрддрддрд╛рдУрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЗ рдЖрд╕рдкрд╛рд╕ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рдФрд░ рдЬрдм рдЖрдк рдПрдХ рдЕрдорд╛рдиреНрдп рдПрдирдо-рд╡реИрд▓реНрдпреВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХреЛрдИ рд╕рд╛рдорд╛рдиреНрдп рдПрдХ-рдЖрдХрд╛рд░-рдлрд┐рдЯ-рд╕рднреА рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЕрдХреНрд╕рд░ рдЖрдк рдЧрд▓рддреА рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВред рдХрднреА-рдХрднреА рдЖрдк рдЗрд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ-рдорд╛рди рдореЗрдВ рдЬрд╝рдмрд░рджрд╕реНрддреА рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдордп рдЖрдк рдЗрд╕реЗ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЗрдзрд░-рдЙрдзрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдпрд╣ рдкреБрди: рдХреНрд░рдордмрджреНрдз рд╣реЛрдиреЗ рдкрд░ рдЦреЛ рди рдЬрд╛рдПред

рдмреЗрд╢рдХ рдЖрдк рддрд░реНрдХ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЕрднреА рднреА рдПрдХ рд╡рд┐рд╢реНрд╡рд╛рд╕-рд╕реАрдорд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЬрд╣рд╛рдВ рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд╡реНрдпрд╡рд╣рд╛рд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдФрд░ рдЙрд╕ рд╕реАрдорд╛ рдХреЗ рдЕрдВрджрд░ рд╕рдм рдХреБрдЫ рдЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдФрд░ рдорд╛рдирд╕рд┐рдХ рдореЙрдбрд▓ рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдХрд┐ рдпрд╣ рд╡рд┐рд╢реНрд╡рд╛рд╕-рд╕реАрдорд╛ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдХреНрдпреЛрдВрдХрд┐ рдмрд╛рдЗрдирд░реА рдореЗрдВ рд╕рднреА рдХреЛрдб рдкрд░рдорд╛рдгреБ рд░реВрдк рд╕реЗ рдмрджрд▓ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕реБрд╕рдВрдЧрдд рд░рд╣реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди рдзреАрд░реЗ-рдзреАрд░реЗ рдорд░рдореНрдордд рдХреЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рд╡рд╣ рдорд╛рдирд╕рд┐рдХ рдореЙрдбрд▓ рдирд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ; рдЕрдЪрд╛рдирдХ, рдкреНрд░рд╛рдХреГрддрд┐рдХ рдЯреНрд░рд╕реНрдЯ-рд╕реАрдорд╛ рдПрдХ рдкреИрдХреЗрдЬ (рдпрд╛ рд╢рд╛рдпрдж рднрдВрдбрд╛рд░) рдмрди рдЬрд╛рддреА рд╣реИ, рдЬрд┐рди рдЗрдХрд╛рдЗрдпреЛрдВ рдкрд░ рдЖрдк рдЕрдкрдиреА рдкрд░рдорд╛рдгреБ рдорд░рдореНрдордд рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЬрд┐рд╕ рдЗрдХрд╛рдИ рдкрд░ рдЖрдк рдЖрддреНрдордирд┐рд░реНрднрд░ рд╣реЛрдиреЗ рдХрд╛ рднрд░реЛрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВред

рдФрд░, рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрддреНрдо-рд╕рдВрдЧрддрд┐ рдХреА рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рдФрд░ рдорд╣рд╛рди рдЗрдХрд╛рдИ рд╣реИред рдПрдХ рдкреИрдХреЗрдЬ рдЗрддрдирд╛ рдмрдбрд╝рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЙрд╕рдХреЗ рд╢рдмреНрджрд╛рд░реНрде, рдирд┐рдпрдо рдФрд░ рдкрд░рдВрдкрд░рд╛рдПрдВ рдЖрдкрдХреЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рд░рд╣реЗред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдирд┐рд░реНрдпрд╛рдд рдкреИрдХреЗрдЬ-рд╕реНрддрд░ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рди рдХрд┐ рдкреНрд░рдХрд╛рд░-рд╕реНрддрд░ рдкрд░ рдФрд░ рдХреНрдпреЛрдВ рд╢реАрд░реНрд╖-рд╕реНрддрд░реАрдп рдШреЛрд╖рдгрд╛рдУрдВ рдХреЛ рдкреИрдХреЗрдЬ-рд╕реНрддрд░ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рди рдХрд┐ рдХрд╛рд░реНрдпрдХреНрд░рдо-рд╕реНрддрд░ рдкрд░ред рдкреИрдХреЗрдЬ-рд╕реНрддрд░ рдкрд░ рднреА рдЕрдЬреНрдЮрд╛рдд рдПрдирдо-рд╡реИрд▓реНрдпреВ рдХреА рд╕рд╣реА рд╣реИрдВрдбрд▓рд┐рдВрдЧ рддрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ рдФрд░ рдореЗрд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдмрдЪрдд рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЧреИрд░-рдирд┐рд░реНрдпрд╛рддрд┐рдд рдлрд╝рдВрдХреНрд╢рди рд╣реИ, рдЬреЛ рдЗрд╕рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИред

рдореИрдВ рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд╕рд╛рде рдмреЛрд░реНрдб рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реЛрдЧрд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд╡рд┐рдЪ рдХреЛ рдПрдХ рдбрд┐рдлрд╝реЙрд▓реНрдЯ-рдХреЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдердХрд╛рд╡рдЯ-рдЬрд╛рдВрдЪ рд╕рд╣рд┐рдд рдЯрд╛рдЗрдк-рдЪреЗрдХ рдХрд┐рдП рдЧрдП рдПрдирдо рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред

@Merovius рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдФрд░ рдкреИрдХреЗрдЬ рджреЛрдиреЛрдВ рд╣реА рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╕реАрдорд╛рдПрдБ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдЗрд╕реЗ рд░рдЦрд╛ рд╣реИред

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдмрд╛рд╣рд░ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЗрд╕рдХреЗ рдкреНрд░рд╡реЗрд╢ рдкрд░ рдорд╛рдиреНрдп рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреБрдХреНрдд рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдореЗрдВ рдЕрдирдорд╛рд░реНрд╢рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдкрд░ рдЙрдЪрд┐рдд рджреЗрдЦрднрд╛рд▓ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рдХрд┐ рдХрднреА рдирд╣реАрдВ рдЬрд╛рддрд╛ред рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпреЛрдЧ/рдПрдирдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреБрдЫ рднреА рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред рдЖрдк рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдпрд╣реА рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ-рдХрднреА-рдХрднреА рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝реАрд▓реНрдб рдпрд╛ рдмрд╣реБрдд рдХрдо рдлрд╝реАрд▓реНрдб рдорд┐рд▓рддреЗ рд╣реИрдВред рд╕рдВрд░рдЪрдирд╛рдПрдВ рдЕрднреА рднреА рдЙрдкрдпреЛрдЧреА рд╣реИрдВред

рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдПрдирдо рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдореЙрдбрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП

type FromTheNetwork enum {
  // pretend all the "valid" values are listed here
  Missing // the value was not included in the message
  Unknown // the value was not in the set of the valid values
  Error // there was an error attempting to read the value
}

рдФрд░ рдпреЛрдЧ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЖрдк рдЖрдЧреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:

type FromTheNetwork pick {
  Missing struct{} // Not included in message
  Valid somepkg.TheSumBeingReceived // Include valid states with composition
  Unknown []byte // Raw bytes of unknown value received
  Error error // The error from attempting to read the value
}

(рдкреВрд░реНрд╡ рддрдм рддрдХ рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЖрдпреЛрдЬрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЙрди рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рд╡реИрдзрддрд╛ рдПрдирдо рдХреЗ рдореВрд▓реНрдп рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдпреЛрдЧ рдкреНрд░рдХрд╛рд░ рдЗрд╕рдХрд╛ рдзреНрдпрд╛рди рд░рдЦрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рд╣реИ рд╕рдВрд░рдЪрдирд╛ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдлрд╝реАрд▓реНрдб рд╕реЗрдЯ рд╣реЛ рд╕рдХрддреА рд╣реИред)

рдкреИрдХреЗрдЬ рд╕реНрддрд░ рдкрд░, рдЖрдкрдХреЛ рдЕрднреА рднреА рдЙрдЪреНрдЪ рд╕реНрддрд░реАрдп рд╕рддреНрдпрд╛рдкрди рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рдореНрди рд╕реНрддрд░ рдХрд╛ рд╕рддреНрдпрд╛рдкрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИред рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЛрдореЗрди рдХреЛ рдХрдо рдХрд░рдиреЗ рд╕реЗ рдкреИрдХреЗрдЬ рдХреЛ рдЫреЛрдЯрд╛ рдФрд░ рдЖрдкрдХреЗ рд╕рд┐рд░ рдореЗрдВ рд░рдЦрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИред рдпрд╣ рдЯреВрд▓рд┐рдВрдЧ рдХреЗ рдЗрд░рд╛рджреЗ рдХреЛ рднреА рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдкрдХрд╛ рд╕рдВрдкрд╛рджрдХ рд╕рднреА case X: рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд▓рд┐рдЦ рд╕рдХреЗ рдФрд░ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдб рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджреЗ рдпрд╛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рд╕рднреА рдХреЛрдб рд╕рднреА рдорд╛рдорд▓реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЖрдк рдореБрдЭрд╕реЗ рдкрд╣рд▓реЗ рд╕рдВрдХрд▓рдХ рдореЗрдВ рдердХрд╛рд╡рдЯ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХреА рдереА)ред

рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпреЛрдЧ/рдПрдирдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреБрдЫ рднреА рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред рдЖрдк рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдпрд╣реА рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ-рдХрднреА-рдХрднреА рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝реАрд▓реНрдб рдпрд╛ рдмрд╣реБрдд рдХрдо рдлрд╝реАрд▓реНрдб рдорд┐рд▓рддреЗ рд╣реИрдВред рд╕рдВрд░рдЪрдирд╛рдПрдВ рдЕрднреА рднреА рдЙрдкрдпреЛрдЧреА рд╣реИрдВред

рдЕрдЧрд░ рд╣рдо рдЦреБрд▓реЗ рдПрдирдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЬреИрд╕реЗ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЖрдИрдУрдЯрд╛ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдорд┐рдд), рддреЛ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗред рдЕрдЧрд░ рд╣рдо рдХреНрд▓реЛрдЬреНрдб рдПрдирдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЛрдЧ рдЖрдорддреМрд░ рдкрд░ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрдм рд╡реЗ рдПрдирдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ) рдпрд╛ рдПрдирдореНрд╕ рдХреЗ рд╕рд╛рде рдердХрд╛рд╡рдЯ-рдЬрд╛рдВрдЪ, рддреЛ рд╡реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рд╢реЗрд╖ рд╣реИрдВред рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдирд╣реАрдВ рд╣реИрдВред

рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕ рдХреЗ рд╕рд╛рде рд╕рд╛рджреГрд╢реНрдп рдЗрд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрд╛рддрд╛ рд╣реИ: рдЧреЛ 1 рд╕рдВрдЧрддрддрд╛ рд╡рд╛рджрд╛ рдХрд┐рд╕реА рднреА рд╡рд╛рджреЗ рд╕реЗ рдмрд┐рдирд╛ рдЪрд╛рдмреА рд╡рд╛рд▓реЗ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рд▓рд┐рдЯрд░рд▓реНрд╕ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рддрд╛ рд╣реИ - рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХреАрдб рд╕реНрдЯреНрд░рдХреНрдЪрд░ рд▓рд┐рдЯрд░рд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ "рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда" рдХреЗ рд░реВрдк рдореЗрдВ рдЗрддрдиреА рджреГрдврд╝рддрд╛ рд╕реЗ рдорд╛рдирд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдЕрднреНрдпрд╛рд╕ рд░рд╣рд╛ рд╣реИ, рдХрд┐ рдЧреЛ рд╡реЗрдЯ рдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЪреЗрдХ рд╣реИред рдХрд╛рд░рдг рдмрд┐рд▓реНрдХреБрд▓ рд╡рд╣реА рд╣реИ: рдпрджрд┐ рдЖрдк рдмрд┐рдирд╛ рдХреБрдВрдЬреА рд╡рд╛рд▓реЗ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдЕрдХреНрд╖рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ structs рдЕрдм рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдирд╣реАрдВ рд╣реИрдВред

рдЗрд╕рд▓рд┐рдП рд╣рд╛рдВред рдЗрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдмрд┐рд▓реНрдХреБрд▓ рдПрдирдо рдХреА рддрд░рд╣ рд╣реИрдВред рдФрд░ рд╣рдо рдПрдХ рд╕рдореБрджрд╛рдп рдХреЗ рд░реВрдк рдореЗрдВ рд╕рд╣рдордд рд╣реБрдП рд╣реИрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рддрд░реАрдХреЗ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред

рдХрд╣рд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдПрдирдо рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрди рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдореЙрдбрд▓рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред

рдЖрдкрдХрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗрд╡рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛-рд╕реАрдорд╛ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ (рдиреЗрдЯрд╡рд░реНрдХ-рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдХреЗ), рдкреИрдХреЗрдЬ-рд╕реАрдорд╛ рдирд╣реАрдВред рдпрджрд┐ рдореИрдВ FromTheNetwork рдореЗрдВ "рдЕрдорд╛рдиреНрдпрдЗрдВрдЯрд░рдирд▓рд╕реНрдЯреЗрдЯ" (рдХреБрдЫ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП) рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рддреЛ рдкреИрдХреЗрдЬ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдВрдЧреЗ? рдХреНрдпрд╛ рдореБрдЭреЗ рдлрд┐рд░ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдирдХреЗ рд╕реНрд╡рд┐рдЪ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛? рдлрд┐рд░ рдпрд╣ рдХреНрд░рдорд┐рдХ рдорд░рдореНрдордд рдореЙрдбрд▓ рдореЗрдВ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ-рдХреЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ? рддрдм рд╡рд╣рд╛рдБ enums рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

рдлрд┐рд░ рд╕реЗ, рдЦреБрд▓реЗ рдПрдирдо рдХрд╛ рд╣реЛрдирд╛ рдПрдХ рдЕрд▓рдЧ рд╕рд╡рд╛рд▓ рд╣реИред рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рде рдмреЛрд░реНрдб рдкрд░ рд░рд╣реВрдВрдЧрд╛

рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЛрдореЗрди рдХреЛ рдХрдо рдХрд░рдиреЗ рд╕реЗ рдкреИрдХреЗрдЬ рдХреЛ рдЫреЛрдЯрд╛ рдФрд░ рдЖрдкрдХреЗ рд╕рд┐рд░ рдореЗрдВ рд░рдЦрдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИред рдпрд╣ рдЯреВрд▓рд┐рдВрдЧ рдХреЗ рдЗрд░рд╛рджреЗ рдХреЛ рднреА рд╕реНрдкрд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдкрдХрд╛ рд╕рдВрдкрд╛рджрдХ рд╕рднреА рдХреЗрд╕ рдПрдХреНрд╕: рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рд▓рд┐рдЦ рд╕рдХреЗ рдФрд░ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХреЛрдб рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджреЗ рдпрд╛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рд╕рднреА рдХреЛрдб рд╕рднреА рдорд╛рдорд▓реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд░рд╣реЗ рд╣реИрдВ

рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдирдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рд▓рд╛рдЗрдирд┐рдВрдЧ рдЯреВрд▓ const -рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рд▓рд┐рдП iota рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣реНрдпреБрд░рд┐рд╕реНрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╣рд░ рдорд╛рдорд▓рд╛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЙрд╕ "рдПрдирдо" рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдкрдиреЗ рдЗрдЪреНрдЫрд┐рдд рдЪреЗрдХ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИред рдореИрдВ рд╕реНрд╡рдд: рдкреВрд░реНрдгрддрд╛ рдпрд╛ рд▓рд╛рдЗрдирд┐рдВрдЧ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЗрди "рдПрдирдореНрд╕ рдмрд╛рдп рдХрдиреНрд╡реЗрдВрд╢рди" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреЛрд░реНрдб рдкрд░ рд░рд╣реВрдВрдЧрд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд╡рд┐рдЪ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ (рдЬреНрдЮрд╛рдд) рдорд╛рдорд▓реЗ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред рдореИрдВ рдПрдХ рдПрдирдо-рдХреАрд╡рд░реНрдб рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рднреА рд╡рд┐рд░реЛрдз рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ рдЬреЛ рдЬреНрдпрд╛рджрд╛рддрд░ рдРрд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ; рдпрд╛рдиреА рдПрдХ рдПрдирдо рдЦреБрд▓рд╛ рд╣реИ (рдХреЛрдИ рднреА рдкреВрд░реНрдгрд╛рдВрдХ рдорд╛рди рд▓реЗ рд╕рдХрддрд╛ рд╣реИ), рдЖрдкрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реНрдХреЛрдкрд┐рдВрдЧ рджреЗрддрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рд╕реНрд╡рд┐рдЪ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ (рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╡реЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЧрдд рдХреЗ рд▓рд┐рдП рдЖрдИрдУрдЯрд╛-рдПрдирдореНрд╕ рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд рдЬреЛрдбрд╝ рджреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рд╡реЗ рдореЗрд░реЗ рдПрдЬреЗрдВрдбреЗ рдХреЛ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рдкрд╣реБрдВрдЪрд╛рдПрдВрдЧреЗ)ред рдЕрдЧрд░ рдпрд╣реА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╣реИ - рдареАрдХ рд╣реИред рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдорд░реНрдердХреЛрдВ (рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдкрд╛рда рдирд╣реАрдВ) рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред

рд╣рдо рдХреНрд░рдорд┐рдХ рдорд░рдореНрдордд рдФрд░ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рдХреЛ рд╕рдВрднрд╡ рд░рдЦрдиреЗ рдХреЗ рдорд╣рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрд╕рд╣рдордд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рдореЗрдВрдЯрд┐рдХ рд╡рд░реНрдЬрдирд┐рдВрдЧ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдЗрд╕реЗ рд╣рд▓ рдХрд░рддреА рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд╛рддреЗ рд╣реИрдВ, рддреЛ рдПрдирдореЛрдВ рдХреЛ рд╣рд╛рдирд┐рдХрд╛рд░рдХ рдпрд╛ рд╡реНрдпрд░реНрде рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд╛рдиреНрдп рдФрд░ рдЙрдЪрд┐рдд рд╣реИред рдФрд░ рдпрд╣реА рд╡рд╣ рдкреНрд░рд╢реНрди рдерд╛ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдЙрддреНрддрд░ рджреЗ рд░рд╣рд╛ рдерд╛: рдХреИрд╕реЗ рд▓реЛрдЧ рдпрдереЛрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рд░ рдЬрдЧрд╣ рдЪреЗрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдЯреНрд░реЗрдбрдСрдлрд╝ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрддреНрддрд░: рдПрдкреАрдЖрдИ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдХреЗ, рдЬреЛ рд╡реИрд╕реЗ рднреА рдЙрдкрдпреЛрдЧ-рд╕реНрдерд▓ рдкрд░ рдЗрди рдЬрд╛рдВрдЪреЛрдВ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдмрдирд╛рддрд╛ рд╣реИред

рд╕рдордп-рд╕рдордп рдкрд░ рдПрдирдо рдХреЗ рд╡рд┐рд░реЛрдзрд┐рдпреЛрдВ рдиреЗ рдХрд╣рд╛ рдХрд┐ рд╡реЗ рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИрдВ, рд╣рдореЗрдВ рдЕрднреА рднреА рдХреНрд░рдорд╛рдВрдХрди/рд╕рдВрдХреНрд░рдордг рдХреЗ рдмрд╛рдж рдЬрд╛рдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╣рдо рд╕рдВрдЧрддрддрд╛ рдХреЛ рддреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЖрджрд┐ред

рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдЖрдкрдХреА рд╡рд┐рдХрд╛рд╕ рдФрд░ рдХрд▓рд╛рддреНрдордХрддрд╛ рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реИрдВред
рдЖрдк рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдПрдирдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдЗрдП рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рдЙрджрд╛рд╣рд░рдг 1. рдореИрдВ рдирд┐рдореНрди рд╕реНрддрд░ рдХрд╛ рдбреЗрд╡рд▓рдкрд░ рд╣реВрдВ рдФрд░, рдореБрдЭреЗ рдХреБрдЫ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдкрддреЗ, рд╕реНрдерд╛рдкрд┐рдд рдирд┐рдореНрди рд╕реНрддрд░ рдХреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореВрд▓реНрдпреЛрдВ рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрд╕реНрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЕрдм рдЧреЛ рдореЗрдВ рдореБрдЭреЗ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛ рд╣реИ: рдмрд┐рдирд╛ рдЖрдИрдУрдЯрд╛ рдХреЗ рдХреЙрдиреНрд╕реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрдИ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдпрд╣ рдмрджрд╕реВрд░рдд рд╣реЛрдЧрд╛ . рдореИрдВ рдПрдХ рдкреИрдХреЗрдЬ рдХреЗ рд▓рд┐рдП рдФрд░ рдкреНрд░реЗрд╕ рдХреЗ рдмрд╛рдж рдХрдИ рд╕реНрдерд┐рд░рд╛рдВрдХ рдмреНрд▓реЙрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдореБрдЭреЗ рд╕рднреА 20 рд╕реНрдерд┐рд░рд╛рдВрдХ рдорд┐рд▓реЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЙрдирдХреЗ рд╕рдорд╛рди рдкреНрд░рдХрд╛рд░ рдФрд░ рд╕рдорд╛рди рдирд╛рдо рд╣реИрдВ рддреЛ рдореИрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдпрджрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдбрд╝рд╛ рд╣реИ рддреЛ рдЖрдкрдХреЛ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рдЬрд╛рдПрдЧреАред рд░рдХреНрд╖рд╛рддреНрдордХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП, рдЯреАрдбреАрдбреА рд╣рдореЗрдВ рдбреБрдкреНрд▓реАрдХреЗрдЯ рдЪреЗрдХ рдХреЛрдб (рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХреЛрдб = рдбреБрдкреНрд▓реАрдХреЗрдЯ рддреНрд░реБрдЯрд┐рдпреЛрдВ/рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдкрд░реАрдХреНрд╖рдг) рдХреЛ рдмрдВрдж рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рд╣рдореЗрдВ рд╕рдорд╛рди рд╕рдорд╕реНрдпрд╛рдПрдВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИрдВ рдФрд░ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдореВрд▓реНрдп рдХрднреА рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ (рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдЦреЛрдЬрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдЬрдм рдЙрддреНрдкрд╛рджрди рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рдкрддреЗ рдмрджрд▓ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗ :))ред рд╣рдо рдЕрднреА рднреА рдХрднреА-рдХрднреА рдЬрд╛рдВрдЪрддреЗ рд╣реИрдВ рдХрд┐ рдлрд╝рд╛рдЗрд▓/рдиреЗрдЯ рдЖрджрд┐ рд╕реЗ рд╣рдореЗрдВ рдЬреЛ рдореВрд▓реНрдп рдорд┐рд▓рддрд╛ рд╣реИ рд╡рд╣ рд╕реАрдорд╛ рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдХреЗрдВрджреНрд░реАрдХреГрдд рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ (рд╕реА # Enum.TryParse рджреЗрдЦреЗрдВ)рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП)ред Enums рдХреЗ рд╕рд╛рде рдореИрдВ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рд╕рдордп рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдмрдЪрд╛рддрд╛ рд╣реВрдВред

рдЙрджрд╛рд╣рд░рдг 2. рдореИрдВ рд░рд╛рдЬреНрдп/рддреНрд░реБрдЯрд┐ рддрд░реНрдХ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЫреЛрдЯреЗ рдореЙрдбреНрдпреВрд▓ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдЕрдЧрд░ рдореИрдВ рдПрдирдо рдХреЛ рдирд┐рдЬреА рдмрдирд╛рддрд╛ рд╣реВрдВ, рддреЛ рдХрд┐рд╕реА рдХреЛ рднреА рдЗрд╕ рдПрдирдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЖрдк рдЗрд╕реЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЗ 1 рд╕реЗ рд╕рднреА рд▓рд╛рднреЛрдВ рдХреЗ рд╕рд╛рде рдмрджрд▓/рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдХреБрдЫ рдирд┐рдЬреА рддрд░реНрдХ рдкрд░ рдЕрдкрдирд╛ рдХреЛрдб рдЖрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рд╡рд┐рдХрд╛рд╕ рдкрд░ рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧрд▓рдд рд╣реЛ рдЧрдпрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг 3. рдореИрдВ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЗ рд▓рд┐рдП рдЕрдХреНрд╕рд░ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдФрд░ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдореЙрдбреНрдпреВрд▓ рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реНрдХ/рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдирдо, рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдЬреАрдм рд╕рдорд╛рдзрд╛рди рд╣реИред рдпрджрд┐ рдЖрдк рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдкрд░ рдирдпрд╛ рдПрдирдо рдирдВрдмрд░ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдХреНрд░реИрд╢ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд╕рд╛рде рдЖрдк рдореЙрдбрд▓ рдХреА рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕реНрдерд┐рддрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕реЗ рдбрд┐рд╕реНрдХ рдкрд░ рд╕рд╣реЗрдЬ рднреА рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рд╕реНрдерд┐рддрд┐ рдкрд░ рджреБрд░реНрдШрдЯрдирд╛ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреЗрддрд╛ рд╣реВрдВред рдпрд╣ рд╣рдореЗрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ, рдХрд┐ рдмреИрдХ рдХреЙрдкреЗрдмрд┐рд▓рд┐рдЯреА/рд╡рд┐рд╕реНрддрд╛рд░ рд╕рдорд╕реНрдпрд╛ рд╣рдорд╛рд░реЗ рд╡рд┐рдХрд╛рд╕ рдХреА рд╕рдорд╕реНрдпрд╛ рд╣реИ рди рдХрд┐ рдПрдирдоред рдпрджрд┐ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдХреМрди рд╕реА enums рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИ рддреЛ рдмрд╕ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдХреНрд╖рдорддрд╛ рд╣реИред

рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдХрд╛рд╕реНрдЯ рдФрд░ рдХрдВрдкрд╛рдЗрд▓ рдЯрд╛рдЗрдо рдПрдирдо рдХреЗ рдмреАрдЪ рдореБрдЦреНрдп рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдПрдирдо рдХреЗ рджреЛ рдореБрдЦреНрдп рдЕрдиреБрдмрдВрдз рд╣реИрдВред

  1. рдирд╛рдордХрд░рдг рдЕрдиреБрдмрдВрдзред
  2. рдореВрд▓реНрдп рдЕрдиреБрдмрдВрдзред
    рдЗрд╕ рдЕрдиреБрдЪреНрдЫреЗрдж рдХреЗ рдкрдХреНрд╖ рдФрд░ рд╡рд┐рдкрдХреНрд╖ рдореЗрдВ рд╕рднреА рддрд░реНрдХреЛрдВ рдкрд░ рдкрд╣рд▓реЗ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
    рдпрджрд┐ рдЖрдк рдЕрдиреБрдмрдВрдз рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдк рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрд╕рдХреЗ рд▓рд╛рднреЛрдВ рдХреЛ рд╕рдордЭ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВред

Enums рдХрд┐рддрдиреА рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рдЕрдкрдиреЗ рдиреБрдХрд╕рд╛рди рд╣реИрдВред
Fe рдЗрд╕реЗ рдмреНрд░реЗрдХ рдХреЛрдкреЗрдмрд┐рд▓рд┐рдЯреА рдХреЗ рдмрд┐рдирд╛ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рд╕реЙрд▓рд┐рдб рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рд╕реЗ рдУ рдЬрд╛рдирддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рди рдХреЗрд╡рд▓ рдПрдирдо рдкрд░ рдмрд▓реНрдХрд┐ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╛рд╕ рдкрд░ рднреА рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред рдХреЛрдИ рдХрд╣ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВ рдЕрдкрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдкреИрд░реЗрд▓рд▓ рд▓реЙрдЬрд┐рдХ рдФрд░ рдореНрдпреВрдЯреЗрдмрд▓ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕ рдХреЗ рд╕рд╛рде рдмрджрд╕реВрд░рдд рдмрдирд╛рддрд╛ рд╣реВрдВред рдЖрдЗрдП рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЛ рдордирд╛ рдХрд░реЗрдВ? рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рд╣рдо рдореНрдпреВрдЯреЗрдмрд▓/рдиреЛ рдореНрдпреВрдЯреЗрдмрд▓ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рдЪреБрдирдиреЗ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдЦрд┐рд░рдХрд╛рд░ рдЬреЛ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВ рдпрд╣ рдиреЛрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ Iota рдХреЗ рдиреБрдХрд╕рд╛рди рднреА рд╣реИрдВред

  1. рдЗрд╕рдореЗрдВ рд╣рдореЗрд╢рд╛ int рдкреНрд░рдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИ,
  2. рдЖрдкрдХреЛ рд╕рд┐рд░ рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рдХрдИ рдмрд╛рд░ рдЦреЛ рд╕рдХрддреЗ рд╣реИрдВ рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдФрд░ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдпрд╣ рдареАрдХ рд╣реИред
    Enums/const рдХреЗ рд╕рд╛рде рдореИрдВ рд╕рд┐рд░реНрдл F12 рджрдмрд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдФрд░ рд╕рднреА рдорд╛рди рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВред
  3. Iota рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛрдб рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ, рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
    рдХреБрдЫ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдореИрдВрдиреЗ рдЗрди рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдЖрдИрдУрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдкреВрд░реА рддрд░рд╣ рдЗрдирдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ред

рдЖрдк рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдПрдирдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╣реИ

рдореЗрд░реА рдХреБрдВрджрддрд╛ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдмрд╛рдж рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдпрд╣рд╛рдВ рдЦрдбрд╝реЗ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХреБрдЫ рд╣реИред

рдФрд░ рдореИрдВ рд╡рд╣ рднреА рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рдерд╛ рдЬреЛ рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ - рдпрд╛рдиреА, рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдирд╛ рдЬрд╣рд╛рдВ рдПрдирдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╣реИред рдореИрдВрдиреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд▓рд┐рдпрд╛ рдЬреЛ рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдерд╛ рдХрд┐ рд╡реЗ рдХреИрд╕реЗ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, рдФрд░ рдпрд╣ рдмрддрд╛рдПрдВ рдХрд┐ рд╡реЗ рдХреИрд╕реЗ рдЪреЛрдЯ рдкрд╣реБрдБрдЪрд╛рддреЗ рд╣реИрдВред

рд╣рдо рдпрдереЛрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрд╕рд╣рдордд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рд╕рднреА рдХреЛ рдХрдо рд╕реЗ рдХрдо рдЕрдЪреНрдЫреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдореЗрдВ рдмрд╣рд╕ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдПред

рдЙрджрд╛рд╣рд░рдг 1

рдореИрдВ рдЖрдкрдХреЛ "рд░рдЬрд┐рд╕реНрдЯрд░ рдирд╛рдо" рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдореИрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЕрдбрд┐рдЧ рд╣реВрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рдФрд░ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдордирдорд╛рдиреЗ рдореВрд▓реНрдп рд▓реЗрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдЙрдЪрд┐рдд рд╣реИред рдлрд┐рд░ рд╕реЗ, proto2 -> proto3 рдореЗрдВ рдареАрдХ рд╡реИрд╕рд╛ рд╣реА рдкрд░рд┐рд╡рд░реНрддрди рдерд╛ рдФрд░ рдпрд╣ рд╕реАрдЦрд╛ рдЕрдиреБрднрд╡ рд╕реЗ рдРрд╕рд╛ рд╣реБрдЖред

рдФрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдПрдХ рд▓рд┐рдВрдЯрд░ рдЗрд╕реЗ рдкрдХрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдореБрдЭреЗ рд╕рднреА 20 рд╕реНрдерд┐рд░рд╛рдВрдХ рдорд┐рд▓реЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЙрдирдХреЗ рд╕рдорд╛рди рдкреНрд░рдХрд╛рд░ рдФрд░ рд╕рдорд╛рди рдирд╛рдо рд╣реИрдВ рддреЛ рдореИрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред рдпрджрд┐ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдбрд╝рд╛ рд╣реИ рддреЛ рдЖрдкрдХреЛ рдпрд╣ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рдЬрд╛рдПрдЧреАред

рдпрджрд┐ рдЖрдк рдирд╛рдо рдЧрд▓рдд рдЯрд╛рдЗрдк рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдмрдВрдж рдПрдирдо рд╣реЛрдиреЗ рд╕реЗ рдЖрдкрдХреА рдорджрдж рдирд╣реАрдВ рд╣реЛрдЧреАред рдХреЗрд╡рд▓ рдЕрдЧрд░ рдЖрдк рдкреНрд░рддреАрдХрд╛рддреНрдордХ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп int/string-literals рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг 2

рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ "рдПрдХ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд╣реАрдВ" рдХреА рддрд░реНрдЬ рдкрд░ "рдПрдХрд▓ рдкреИрдХреЗрдЬ" рдХреЛ рдордЬрдмреВрддреА рд╕реЗ рд░рдЦрддрд╛ рд╣реВрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдореИрдВ рдЗрд╕реЗ рдмрд╣реБрдд рдХрдо рд╕рдВрднрд╛рд╡рдирд╛ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдПрдХ рдорд╛рдорд▓реЗ рдХреЛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ рдпрд╛ рдПрдХ рдХреЛрдб рд╕реНрдерд╛рди рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрдм рдПрдХ рдПрдирдо рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред

рдФрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдПрдХ рд▓рд┐рдВрдЯрд░ рдЗрд╕реЗ рдкрдХрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдЙрджрд╛рд╣рд░рдг 3

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдирдореЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдпрд╣ рд╕рдмрд╕реЗ рдЖрдо рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рд╣реИред рдорд╛рдорд▓реЗ рдореЗрдВ рдорд╛рдорд▓рд╛: рдпрд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореБрджреНрджрд╛ рдЙрдиреНрд╣реЗрдВ рдФрдЪрд┐рддреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЕрдиреНрдп рдорд╛рдорд▓рд╛ рдЬрд┐рд╕рдХрд╛ рдЕрдХреНрд╕рд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд╣ рд╣реИ syscalls - рднреЗрд╕ рдореЗрдВ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг "рдХреЛрдИ рднреА рдХреЛрдб рд╣реИ рдЬрд╣рд╛рдВ рджреЛ рдпрд╛ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдШрдЯрдХ рдРрд╕реЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ", рдЬреЛ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рдкрдХ рд╣реИ, рдЙрдирдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЛрдВ рдХреЗ рд╡рд┐рд╢рд╛рд▓ рдмрд╣реБрдордд рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░, рдХреНрд░рдорд┐рдХ-рдорд░рдореНрдордд-рдореЙрдбрд▓ рдХреЗ рддрд╣рдд, рдХрд┐рд╕реА рднреА рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдПрдкреАрдЖрдИ .

рдПрдлрдЯреАрдЖрд░, рдореИрдВ рдЕрднреА рднреА рдХрд┐рд╕реА рдХреЛ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдПрдирдо рд╣рд╛рдирд┐рдХрд╛рд░рдХ рд╣реИрдВ (рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдореИрдВ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛)ред рдмрд╕ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореИрдВ рдЗрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдХреИрд╕реЗ рдкрд╣реБрдВрдЪрд╛ рдХрд┐ рд╡реЗ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдЙрдирдХреЗ рдкрдХреНрд╖ рдореЗрдВ рддрд░реНрдХ рдЕрд╕рдВрдмрджреНрдз рдХреНрдпреЛрдВ рд▓рдЧрддреЗ рд╣реИрдВред

рдЗрд╕рдореЗрдВ рд╣рдореЗрд╢рд╛ int рдкреНрд░рдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИ,

iota рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЬрд░реВрд░реА рдирд╣реАрдВ, рд▓реЗрдХрд┐рди рдЬреЛ рднреА рд╣реЛ), рд▓реЗрдХрд┐рди const рдмреНрд▓реЙрдХ рдирд╣реАрдВ рд╣реИрдВ, рдЙрдирдХреЗ рдкрд╛рд╕ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рд░рдВрддрд░ рдкреНрд░рдХрд╛рд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдПрдирдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рд╕реБрдкрд░рд╕реЗрдЯред

рдЖрдкрдХреЛ рд╕рд┐рд░ рдореЗрдВ рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдлрд┐рд░ рд╕реЗ, рдЖрдк рдЗрд╕реЗ рдПрдирдо рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рдЖрдк рд╕реНрдерд┐рд░рд╛рдВрдХ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдЖрдк рдПрдХ рдПрдирдо-рдШреЛрд╖рдгрд╛ рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

Iota рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛрдб рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╣реИ, рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд╣рд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рд╣реИ, рддреЛ рдкрд░реАрдХреНрд╖рдг рдЕрдзрд┐рдХ рд╣реИред рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕реНрдерд┐рд░рд╛рдВрдХ рд▓рд┐рдЦрд┐рдП, рдЖрдк рд╡реИрд╕реЗ рднреА рдПрдХ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдРрд╕рд╛ рдХрд░реЗрдВрдЧреЗред

iota рдЧреЛ рдореЗрдВ рдПрдирдо рдХрд░рдиреЗ рдХрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЕрдиреБрд╢рдВрд╕рд┐рдд рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ - const рдШреЛрд╖рдгрд╛рдПрдВ рд╣реИрдВред iota рд▓рдЧрд╛рддрд╛рд░ рдпрд╛ рдлреЙрд░реНрдореВрд▓рд╛рдЗрдХ рдХреЙрдиреНрд╕реНрдЯ рдбрд┐рдХреНрд▓реЗрд░реЗрд╢рди рд▓рд┐рдЦрддреЗ рд╕рдордп рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред

рдФрд░ рд╣рд╛рдВ, рдЧреЛ рдХреЗ рдЦреБрд▓реЗ рдПрдирдо рдореЗрдВ рдХрдорд┐рдпрд╛рдВ рд╣реИрдВ, рдЬрд╛рд╣рд┐рд░ рд╣реИред рдЙрдирдХрд╛ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░: рдЖрдк рдПрдХ рд╕реНрд╡рд┐рдЪ рдореЗрдВ рдПрдХ рдорд╛рдорд▓реЗ рдХреЛ рднреВрд▓ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдмрдЧ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд╡реЗ рдирд╛рдорд╕реНрдерд╛рди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдЧрд▓рддреА рд╕реЗ рдПрдХ рдЧреИрд░-рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдЕрдорд╛рдиреНрдп рдорд╛рди (рдмрдЧ рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рдгреА) рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИред
рд▓реЗрдХрд┐рди рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдЙрддреНрдкрд╛рджрдХ рд▓рдЧрддрд╛ рд╣реИ, рдЗрди рдбрд╛рдЙрдирд╕рд╛рдЗрдбреНрд╕ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдФрд░ рдХрд┐рд╕реА рднреА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдХреЗ рдбрд╛рдЙрдирд╕рд╛рдЗрдбреНрд╕ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЙрдиреНрд╣реЗрдВ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдорд╛рдзрд╛рди (рдПрдирдо рдкреНрд░рдХрд╛рд░) рд▓реЗрдиреЗ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯреНрд░реЗрдбрдСрдл рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣рд╕ рдХрд░рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрддрд╛ рд╣реИред

рдореЗрд░реЗ рд▓рд┐рдП, рдЕрдзрд┐рдХрд╛рдВрд╢ рдбрд╛рдЙрдирд╕рд╛рдЗрдбреНрд╕ рдХреЛ рд╡рд░реНрддрдорд╛рди рднрд╛рд╖рд╛ рдореЗрдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рд▓рд┐рдВрдЯрд░-рдЯреВрд▓ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдкреНрд░рдХрд╛рд░ рдХреА рдХреЙрдиреНрд╕реНрдЯ-рдШреЛрд╖рдгрд╛рдУрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддрд╛ рд╣реИ рдФрд░ рдЙрдирдХреЗ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддрд╛ рд╣реИред рдиреЗрдорд╕реНрдкреЗрд╕рд┐рдВрдЧ рдХреЛ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рд╕рдорд╛рдзрд╛рди рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдПрдирдо рд╕реЗ рднреАред

рдореИрдВ рдЖрдкрдХреЛ "рд░рдЬрд┐рд╕реНрдЯрд░ рдирд╛рдо" рджреЗ рд╕рдХрддрд╛ рд╣реВрдВ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдореИрдВ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЕрдбрд┐рдЧ рд╣реВрдВ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рдФрд░ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдордирдорд╛рдиреЗ рдореВрд▓реНрдп рд▓реЗрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдЙрдЪрд┐рдд рд╣реИред рдлрд┐рд░ рд╕реЗ, proto2 -> proto3 рдореЗрдВ рдареАрдХ рд╡реИрд╕рд╛ рд╣реА рдкрд░рд┐рд╡рд░реНрддрди рдерд╛ рдФрд░ рдпрд╣ рд╕реАрдЦрд╛ рдЕрдиреБрднрд╡ рд╕реЗ рдРрд╕рд╛ рд╣реБрдЖред

рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рд╕реНрдерд╛рдкрд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреЛ рдХрд╣рд╛ред Fe wav рдкреНрд░рд╛рд░реВрдк рдХрд╛ рдЖрдзрд╛рд░ рдХрдИ рд╡рд░реНрд╖реЛрдВ рддрдХ рдирд╣реАрдВ рдмрджрд▓рд╛ рдФрд░ рд╢рд╛рдирджрд╛рд░ рдмреИрдХ рдХреНрд╖рдорддрд╛ рдкреНрд░рд╛рдкреНрдд рдХреАред рдпрджрд┐ рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдВ рдирдП рдореВрд▓реНрдп рдЖрдк рдПрдирдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рдореВрд▓реНрдп рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдпрджрд┐ рдЖрдк рдирд╛рдо рдЧрд▓рдд рдЯрд╛рдЗрдк рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдмрдВрдж рдПрдирдо рд╣реЛрдиреЗ рд╕реЗ рдЖрдкрдХреА рдорджрдж рдирд╣реАрдВ рд╣реЛрдЧреАред рдХреЗрд╡рд▓ рдЕрдЧрд░ рдЖрдк рдкреНрд░рддреАрдХрд╛рддреНрдордХ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп int/string-literals рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рд╣рд╛рдБ рдпрд╣ рдореБрдЭреЗ рдЕрдЪреНрдЫреЗ рдирд╛рдо рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рдХреБрдЫ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдПрдХ рдирд╛рдо рд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╡рд┐рдХрд╛рд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рддреЗрдЬ рдмрдирд╛рддрд╛ рд╣реИред рдпрд╣ рдСрдЯреЛрдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рд╡реЗрд░рд┐рдПрдВрдЯ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдПрдХ рддрдХ рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдирдореЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рдпрд╣ рд╕рдмрд╕реЗ рдЖрдо рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓рд╛ рд╣реИред рдорд╛рдорд▓реЗ рдореЗрдВ рдорд╛рдорд▓рд╛: рдпрд╣ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдореБрджреНрджрд╛ рдЙрдиреНрд╣реЗрдВ рдФрдЪрд┐рддреНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдЕрдиреНрдп рдорд╛рдорд▓рд╛ рдЬрд┐рд╕рдХрд╛ рдЕрдХреНрд╕рд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд╣ рд╣реИ syscalls - рднреЗрд╕ рдореЗрдВ рдПрдХ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг "рдХреЛрдИ рднреА рдХреЛрдб рд╣реИ рдЬрд╣рд╛рдВ рджреЛ рдпрд╛ рджреЛ рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╡рд┐рдХрд╕рд┐рдд рдШрдЯрдХ рдРрд╕реЗ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ", рдЬреЛ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рдкрдХ рд╣реИ, рдЙрдирдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ-рдорд╛рдорд▓реЛрдВ рдХреЗ рд╡рд┐рд╢рд╛рд▓ рдмрд╣реБрдордд рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░, рдХреНрд░рдорд┐рдХ-рдорд░рдореНрдордд-рдореЙрдбрд▓ рдХреЗ рддрд╣рдд, рдХрд┐рд╕реА рднреА рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЧрдП рдПрдкреАрдЖрдИ .

рд▓реЗрдХрд┐рди рд╕реНрдерд┐рд░рд╛рдВрдХ/рдПрдирдо рдХрд╛ рдЙрдкрдпреЛрдЧ/рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдирд╛ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдореВрд▓ рдХреЛ рджреВрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЖрдкрдХреЛ рдЕрднреА рднреА рдмреИрдХ рдХреЙрдкреЗрдмрд┐рд▓рд┐рдЯреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИред рдореИрдВ рдпрд╣ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдПрдирдо/рдХрд╛рд╕реНрдЯ рдореЗрдВ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ рд╣рдорд╛рд░реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╣реИред

рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ "рдПрдХ рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдирд╣реАрдВ" рдХреА рддрд░реНрдЬ рдкрд░ "рдПрдХрд▓ рдкреИрдХреЗрдЬ" рдХреЛ рдордЬрдмреВрддреА рд╕реЗ рд░рдЦрддрд╛ рд╣реВрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдореИрдВ рдЗрд╕реЗ рдмрд╣реБрдд рдХрдо рд╕рдВрднрд╛рд╡рдирд╛ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдПрдХ рдорд╛рдорд▓реЗ рдХреЛ рднреВрд▓ рдЬрд╛рддреЗ рд╣реИрдВ рдпрд╛ рдПрдХ рдХреЛрдб рд╕реНрдерд╛рди рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрдм рдПрдХ рдПрдирдо рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВред

рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдкрдХреЛ рдЕрднреА рднреА рдирд╛рдо рд╕рдВрд╡рд╣рди рдФрд░ рд╕рдВрдХрд▓рди рд╕рдордп рдЬрд╛рдВрдЪ рдХреЗ рд▓рд╛рдн рд╣реИрдВ,

рд╣рд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рд╣реИ, рддреЛ рдкрд░реАрдХреНрд╖рдг рдЕрдзрд┐рдХ рд╣реИред рдпрджрд┐ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╕реНрдерд┐рд░рд╛рдВрдХ рд▓рд┐рдЦрд┐рдП, рдЖрдк рд╡реИрд╕реЗ рднреА рдПрдХ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдРрд╕рд╛ рдХрд░реЗрдВрдЧреЗред

рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдХреЛрдб рдХреА рд╕рднреА рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдорд┐рд╕рд╛рд▓ рд╣реИ рддреЛ рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВ рдЬрд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕реЗ рдмрд┐рдирд╛ рдХреЛрдЯрд╛ рдХреЗ рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдкреБрд░рд╛рдирд╛ рдЙрджрд╛рд╣рд░рдг рд╕рд┐рд░реНрдл рдПрдХ рдордЬрд╛рдХ рд╣реИред

рдлрд┐рд░ рд╕реЗ, рдЖрдк рдЗрд╕реЗ рдПрдирдо рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рдЖрдк рд╕реНрдерд┐рд░рд╛рдВрдХ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рдЖрдк рдПрдХ рдПрдирдо-рдШреЛрд╖рдгрд╛ рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ enums рдХреЗ рд▓рд┐рдП рддрд░реНрдХ рдирд╣реАрдВ рд╣реИред

@рдореЗрд░реЛрд╡рд┐рдпрд╕

рдЕрдЧрд░ рд╣рдо рдХреНрд▓реЛрдЬреНрдб рдПрдирдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓реЛрдЧ рдЖрдорддреМрд░ рдкрд░ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ, рдЬрдм рд╡реЗ рдПрдирдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ) рдпрд╛ рдПрдирдореНрд╕ рдХреЗ рд╕рд╛рде рдердХрд╛рд╡рдЯ-рдЬрд╛рдВрдЪ, рддреЛ рд╡реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╡рд┐рд╢реЗрд╖ рд╣реИрдВред рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдирд╣реАрдВ рд╣реИрдВред

рди рд╣реА рд╡реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рд╣реИрдВред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣реИ

package p
type Enum int
const (
  A Enum = iota
  B
  C
)
func Make() Enum {...}
func Take(Enum) {...}

рддрдерд╛

package q
import "p"
const D enum = p.C + 1

q рдХреЗ рднреАрддрд░ q D рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИ (рдЬрдм рддрдХ рдХрд┐ p Enum(3) рд▓рд┐рдП рдЕрдкрдирд╛ рд▓реЗрдмрд▓ рдирд╣реАрдВ рдЬреЛрдбрд╝рддрд╛) рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рддрдм рддрдХ рдЬрдм рддрдХ рдЖрдк рдХрднреА рдирд╣реАрдВ рдЗрд╕реЗ рд╡рд╛рдкрд╕ p рдкрд░ рдкрд╛рд╕ рдХрд░реЗрдВ: рдЖрдк p.Make рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ D рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк p.Take рдкрд░ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдпрд╣ q.D рдкрд╛рд░рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ A , B , C рдореЗрдВ рд╕реЗ рдПрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдмрдЧ рд╣реИред рдЖрдк рдРрд╕рд╛ рдХрд░рдХреЗ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

package q
import "p"
type Enum int
const (
    A = p.A
    B = p.B
    C = p.C
    D = C + 1
)
// needs to return an error if passed D or an unknown state of Enum
func To(Enum) (p.Enum, error) {...}
// needs to return an error if p.Enum has a value not known to the author
// at the time this package was written.
func From(p.Enum) (Enum, error) {...}

рднрд╛рд╖рд╛ рдореЗрдВ рдмрдВрдж рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдпрд╛ рдЙрд╕рдХреЗ рдмрд┐рдирд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдмрдВрдж рдкреНрд░рдХрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд╕рднреА рдореБрджреНрджреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╕рдВрдХрд▓рдХ рдХреЗ рдмрд┐рдирд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рджреЗрдЦ рд░рд╣рд╛ рд╣реИред

рдЖрдкрдХрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗрд╡рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛-рд╕реАрдорд╛ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИ (рдиреЗрдЯрд╡рд░реНрдХ-рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдХреЗ), рдкреИрдХреЗрдЬ-рд╕реАрдорд╛ рдирд╣реАрдВред рдпрджрд┐ рдореИрдВ FromTheNetwork рдореЗрдВ рдПрдХ "рдЕрдорд╛рдиреНрдп рдЗрдВрдЯрд░рдирд▓рд╕реНрдЯреЗрдЯ" (рдХреБрдЫ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП) рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ, рддреЛ рдкреИрдХреЗрдЬ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░реЗрдВрдЧреЗ? рдХреНрдпрд╛ рдореБрдЭреЗ рдлрд┐рд░ рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрдирдХреЗ рд╕реНрд╡рд┐рдЪ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рд╣реЛрдЧрд╛? рдлрд┐рд░ рдпрд╣ рдХреНрд░рдорд┐рдХ рдорд░рдореНрдордд рдореЙрдбрд▓ рдореЗрдВ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ-рдХреЗрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ? рддрдм рд╡рд╣рд╛рдБ enums рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

рдХреЗрд╡рд▓ рдПрдирдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдЖрдкрдХреЛ рдЕрднреА рднреА рдКрдкрд░ рдХреА рддрд░рд╣ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд░рд╛рдЬреНрдп рдХреЗ рд╕рд╛рде рдЕрдкрдирд╛ рдЦреБрдж рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд░реВрдкрд╛рдВрддрд░рдг рдХрд╛рд░реНрдп рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдирдо рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рднреА рдпреЛрдЧ рдкреНрд░рдХрд╛рд░ рдХрдВрдкреЛрдЬреЗрдмрд▓ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ "рд╡рд┐рд╕реНрддрд╛рд░" рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рджрд┐рдпрд╛ рдЧрдпрд╛

package p
type Enum pick {
  A, B, C struct{}
}

Enum рдХреЗ рд╕рд╛рде "рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд" рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

package q
import "p"
type Enum pick {
  P p.Enum
  D struct{}
}

рдФрд░ рдЗрд╕ рдмрд╛рд░ p D рдЬреЛрдбрд╝рдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рд╣реИред рдХреЗрд╡рд▓ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдпрд╣ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ p.Enum q.Enum рдЕрдВрджрд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбрдмрд▓-рд╕реНрд╡рд┐рдЪ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдФрд░, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдЖрдкрдХрд╛ рд╕рдВрдкрд╛рджрдХ рдХрдВрдХрд╛рд▓ рдХреЛ рдереВрдХ рд╕рдХрддрд╛ рд╣реИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрд╡рд┐рдЪ рдЖрдЙрдЯред

рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдирдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рд▓рд╛рдЗрдирд┐рдВрдЧ рдЯреВрд▓ рдЖрдИрдУрдЯрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрдиреНрд╕реНрдЯ-рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╣реНрдпреБрд░рд┐рд╕реНрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдЬрд╛рдВрдЪ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╣рд░ рдорд╛рдорд▓рд╛ рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЙрд╕ "рдПрдирдо" рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЖрдк рдЬреЛ рдЪреЗрдХ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рд╕реНрд╡рдд: рдкреВрд░реНрдгрддрд╛ рдпрд╛ рд▓рд╛рдЗрдирд┐рдВрдЧ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЗрди "рдПрдирдореНрд╕ рдмрд╛рдп рдХрдиреНрд╡реЗрдВрд╢рди" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдмреЛрд░реНрдб рдкрд░ рд░рд╣реВрдВрдЧрд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрд╡рд┐рдЪ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ (рдЬреНрдЮрд╛рдд) рдорд╛рдорд▓реЗ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред

рдЗрд╕рдХреЗ рд╕рд╛рде рджреЛ рдореБрд╢реНрдХрд┐рд▓реЗрдВ рд╣реИрдВред

рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдХреЙрдиреНрд╕реНрдЯ/рдЖрдИрдУрдЯрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдкрдиреЗ рдбреЛрдореЗрди рдХреЗ рд╕рдмрд╕реЗрдЯ рдХреЛ рджрд┐рдП рдЧрдП рд▓реЗрдмрд▓ рдХреЗ рд╕рд╛рде рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЕрднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рд╣реИ:

рдПрдХ, рдпрд╣ рдПрдХ рдмрдВрдж рдпрд╛ рдЦреБрд▓реЗ рдПрдирдо рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЬрдмрдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рдПрдХ рдмрдВрдж рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрдорддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдирд╛рдо рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдПрдХ рдХрд╛рд▓реНрдкрдирд┐рдХ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рд░реВрдк рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреБрд▓реЗ рдПрдирдо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

const (
  //Name is the ID of a record field
  Name Record = iota
  //EmpID is the ID of an employee ID field
  EmpID

  //Intermediate values are reserved for future versions

  //Custom is the base of custom fields. Any custom field must have a unique ID greater than Custom.
  Custom Record = 42
)

рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реИ рдХрд┐ 0, 1, рдФрд░ 42 рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЛрдореЗрди рд╣реИрдВред рдЕрдиреБрдмрдВрдз рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реВрдХреНрд╖реНрдо рд╣реИ рдФрд░ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдЖрд╢реНрд░рд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред (рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдмрд╣реБрдд рджреВрд░ рдЬрд╛ рд░рд╣рд╛ рд╣реЛрдЧрд╛!)

рджреВрд╕рд░рд╛, рд╣рдо рдЕрдиреБрдорд╛рдирддрдГ рдпрд╣ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрдерд┐рд░ рд▓реЗрдмрд▓ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЕрднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдбреЛрдореЗрди рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рд╣реИред рдпрд╣ рдКрдкрд░ рд╕реЗ рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рднреА рд╕рд╣реА рдирд╣реАрдВ рд╣реИред рд╣рдо рдЗрд╕ рдЫрджреНрдо-рдкреНрд░рдХрд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рд╕реЗ рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП go/types рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рдиреЛрдВ рдкрд░ рд╕рднреА рд╕реНрд╡рд┐рдЪ рдвреВрдВрдв рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЙрдирдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд▓реЗрдмрд▓ рд╣реИрдВред рдпрд╣ рдорджрджрдЧрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдердХрд╛рд╡рдЯ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рд╣реИред рд╣рдордиреЗ рд╕рднреА рдорд╛рдиреНрдп рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдХрд╡рд░реЗрдЬ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд╛рдмрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдЕрдорд╛рдиреНрдп рдорд╛рди рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдРрд╕рд╛ рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╣рдо рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╣рд░ рд╕реНрд░реЛрдд, рд╕рд┐рдВрдХ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдвреВрдВрдв рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдЧрд╛рд░рдВрдЯреА рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдИ рдЕрдорд╛рдиреНрдп рдорд╛рди рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛, рддрдм рднреА рд╣рдо рд░рдирдЯрд╛рдЗрдо рдкрд░ рдореВрд▓реНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд╣ рдкрд╛рдПрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рд╕рддреНрдп рд╕реЗ рдЕрдирдЬрд╛рди рд╣реИ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдбреЛрдореЗрди рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдПрдиреНрдХреЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдпрд╣рд╛рдВ рдПрдирдо рдФрд░ рд╕рдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдЬреЛ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЗрд╕рдХреЗ рдЕрдкрдиреЗ рдореБрджреНрджреЗ рд╣реИрдВред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╢рд╛рдмреНрджрд┐рдХ рдкреНрд░рдХрд╛рд░ range m n рдПрдХ рдЕрднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдмрдирд╛рддрд╛ рд╣реИ рдЬреЛ рдХрдо рд╕реЗ рдХрдо m рдФрд░ рдЕрдзрд┐рдХрддрдо n (рд╕рднреА v рдХреЗ рд▓рд┐рдП, m тЙд v тЙд n) рд╣реИред рдЗрд╕рдХреЗ рд╕рд╛рде рд╣рдо рдПрдирдо рдХреЗ рдбреЛрдореЗрди рдХреЛ рд╕реАрдорд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ

package p
type Enum range 0 2
const (
  A Enum = iota
  B
  C
)

рдЪреВрдВрдХрд┐ рдбреЛрдореЗрди рдХрд╛ рдЖрдХрд╛рд░ = рд▓реЗрдмрд▓реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, 100% рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХреЗ рд╕рд╛рде рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдПрдХ рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╕рднреА рд╕рдВрднрд╛рд╡рдирд╛рдУрдВ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЙрд╕ рдПрдирдо рдХреЛ рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдореИрдкрд┐рдВрдЧ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдкрд╛рдВрддрд░рдг рдлрд╝рдВрдХреНрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрднреА рднреА рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЛ рд╡реИрд╕реЗ рднреА рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдмреЗрд╢рдХ, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рд╕реВрдХреНрд╖реНрдо рдкрд░рд┐рд╡рд╛рд░ рд╣реИ рдФрд░ рдмрд╛рдХреА рдЧреЛ рдХреЗ рд╕рд╛рде рдЙрддрдирд╛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рдЦреЗрд▓реЗрдВрдЧреЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЗрд╕рдХреЗ рдФрд░ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рд╣рдо рдХреНрд░рдорд┐рдХ рдорд░рдореНрдордд рдФрд░ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд┐рд▓рд┐рдЯреА рдХреЛ рд╕рдВрднрд╡ рд░рдЦрдиреЗ рдХреЗ рдорд╣рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрд╕рд╣рдордд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╕рд┐рдореЗрдВрдЯрд┐рдХ рд╡рд░реНрдЬрдирд┐рдВрдЧ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдмреЗрд╣рддрд░ рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬреЛ рдЗрд╕реЗ рд╣рд▓ рдХрд░рддреА рд╣реИрдВред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдкрд╛рддреЗ рд╣реИрдВ, рддреЛ рдПрдирдореЛрдВ рдХреЛ рд╣рд╛рдирд┐рдХрд╛рд░рдХ рдпрд╛ рд╡реНрдпрд░реНрде рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрдирд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдорд╛рдиреНрдп рдФрд░ рдЙрдЪрд┐рдд рд╣реИред рдФрд░ рдпрд╣реА рд╡рд╣ рдкреНрд░рд╢реНрди рдерд╛ рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдЙрддреНрддрд░ рджреЗ рд░рд╣рд╛ рдерд╛: рдХреИрд╕реЗ рд▓реЛрдЧ рдпрдереЛрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп, рд╣рд░ рдЬрдЧрд╣ рдЪреЗрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдЯреНрд░реЗрдбрдСрдлрд╝ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЙрддреНрддрд░: рдПрдкреАрдЖрдИ рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдФрд░ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдХреЗ, рдЬреЛ рд╡реИрд╕реЗ рднреА рдЙрдкрдпреЛрдЧ-рд╕реНрдерд▓ рдкрд░ рдЗрди рдЬрд╛рдВрдЪреЛрдВ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдмрдирд╛рддрд╛ рд╣реИред

рдмреБрдирд┐рдпрд╛рджреА рдПрдирдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдореИрдВ рд╕рд╣рдордд рд╣реВрдВред рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдореИрдВ рдмрд╕ рджреБрдЦреА рд╣реЛрддрд╛ рдЕрдЧрд░ рдЙрдиреНрд╣реЗрдВ рдпреЛрдЧ рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдЪреБрдирд╛ рдЬрд╛рддрд╛, рд▓реЗрдХрд┐рди рдЕрдм рдореИрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рд╡реЗ рд╣рд╛рдирд┐рдХрд╛рд░рдХ рдХреНрдпреЛрдВ рд╣реЛрдВрдЧреЗред рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдФрд░ @griesemer рдХреЛ рдзрдиреНрдпрд╡рд╛рджред

рдпреЛрдЧ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЬреЛ рдХрд╣рд╛ рд╡рд╣ рдПрдХ рд╡реИрдз рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╕реНрд╡рд┐рдЪ рдХреЛ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рд╕рдВрдкреВрд░реНрдг рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдореБрдЭреЗ рдЕрднреА рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдмрдВрдж рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдХрдИ рд▓рд╛рдн рд╣реИрдВ рдФрд░ рдпрд╣рд╛рдВ рдЬрд╛рдВрдЪ рдХреА рдЧрдИ рддреАрдиреЛрдВ рдореЗрдВ рд╕реЗ, рдпреЛрдЧ рдкреНрд░рдХрд╛рд░ рджреВрд╕рд░реЛрдВ рдХреЗ рдбрд╛рдЙрдирд╕рд╛рдЗрдбреНрд╕ рдХреЗ рдмрд┐рдирд╛ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реЗ рд╣реИрдВред рд╡реЗ рдХрд┐рд╕реА рднреА рдЕрдЪреНрдЫреЗ рдкреНрд░рдХрд╛рд░ рдХреА рддрд░рд╣ рдЕрд╡реИрдз рдореВрд▓реНрдпреЛрдВ рдХреЗ рдХрд╛рд░рдг рд╣реЛрдиреЗ рд╡рд╛рд▓реА рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрддреЗ рд╣реБрдП рд╡рд┐рд╕реНрддрд╛рд░рд╢реАрд▓рддрд╛ рдпрд╛ рдХреНрд░рдорд┐рдХ рдорд░рдореНрдордд рдХреЛ рдмрд╛рдзрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред

рдореБрдЦреНрдп рдХрд╛рд░рдг рдореИрдВ рдЕрдЬрдЧрд░ рдФрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкрд░ рдЧреЛрд▓рд╛рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЕрдиреНрдп рд╕рд╛рдорд╛рдиреНрдп рдЯрд╛рдЗрдкрд▓реЗрд╕ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдкреНрд░рдХрд╛рд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рд╣реИред рдореИрдВрдиреЗ рдЬрд╛рд╡рд╛ рдХреЗ рд╕рд╛рде рдмрд╣реБрдд рдХреБрдЫ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдПрдХ рдЪреАрдЬ рдЬреЛ рдореБрдЭреЗ рдЧреЛрд▓рд╛рдВрдЧ рдореЗрдВ рдпрд╛рдж рдЖрддреА рд╣реИ рдЬреЛ рдЬрд╛рд╡рд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рд╕реБрд░рдХреНрд╖рд┐рдд рдПрдирдо рд╣реИред

рдореИрдВ рдПрдирдо рдХреЗ рд╕рд╛рде рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рд╕реЗ рдЕрд╕рд╣рдордд рд╣реВрдВред рдпрджрд┐ рдЖрдкрдХреЛ рдЗрдирдЯреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЬрд╛рд╡рд╛ рдХреА рддрд░рд╣ рдмрд╕ рдЗрдирдЯреНрд╕ рд╕реЗ рдЪрд┐рдкрдХреЗ рд░рд╣реЗрдВред рдпрджрд┐ рдЖрдкрдХреЛ рд╕реБрд░рдХреНрд╖рд┐рдд рдПрдирдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреВрдВрдЧрд╛ред

type enums enum { foo, bar, baz }

@rudolfschmidt , рдореИрдВ рдЖрдкрд╕реЗ рд╕рд╣рдордд рд╣реВрдВ, рдРрд╕рд╛ рднреА рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ:

type DaysOfTheWeek enum {
  Monday
  Tuesday
}

рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдиреБрдХрд╕рд╛рди рд╣реИ - рд╣рдореЗрдВ рдЙрди рдорд╛рдорд▓реЛрдВ рдореЗрдВ enum рдкрд░ рдирд┐рдпрдВрддреНрд░рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрдм рд╣рдореЗрдВ рдбреЗрдЯрд╛ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЙрдиреНрд╣реЗрдВ JSON рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ FS рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░реИрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдпрджрд┐ рд╣рдо рдЖрдБрдЦ рдмрдВрдж рдХрд░рдХреЗ рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ рдХрд┐ рдПрдирдо рдЕрд╣рд╕реНрддрд╛рдХреНрд╖рд░рд┐рдд рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ рддреЛ рд╣рдо рдПрдХ рдХреЛрдЯрд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдпрджрд┐ рд╣рдо рдХреБрдЫ рдирдпрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдореИрдВ рдХрд┐рддрдиреА рдЖрд╕рд╛рдиреА рд╕реЗ рдорд╛рдиреНрдп рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдиреЗ рд╡рд╛рд▓реЗ JSON рдХреЗ рдЕрдВрджрд░ рдорд╛рди рдПрдирдо рдХрд╛ рд╡реИрдз рддрддреНрд╡ рд╣реИ?
рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВ рдХрд┐ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдмрджрд▓ рд░рд╣рд╛ рд╣реИ?

рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрд░рд┐рдкреНрдЯреЛрдХрд░реЗрдВрд╕реА рдХреА рд╕реВрдЪреА рд╣реИ:

type CryptoCurrency enum {
  BTC
  ETH
  XMR
}

рд╣рдо рдХрдИ рддреГрддреАрдп рдкрдХреНрд╖ рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдбреЗрдЯрд╛ рдХрд╛ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрдирдореЗрдВ рд╕реЗ рд╣рдЬрд╛рд░реЛрдВ рд╣реИрдВред
рдЖрдкрдХреЗ рдкрд╛рд╕ рд▓рдВрдмрд╛ рдЗрддрд┐рд╣рд╛рд╕ рд╣реИ, рднрдВрдбрд╛рд░рдг рдореЗрдВ рдбреЗрдЯрд╛ рдХреА рд╕рдВрдЦреНрдпрд╛ред рд╕рдордп рдмреАрддрддрд╛ рд╣реИ, рдорд╛рди рд▓реАрдЬрд┐рдП, рдмрд┐рдЯрдХреЙрдЗрди рдЕрдВрддрддрдГ рдорд░ рдЬрд╛рддрд╛ рд╣реИред рдХреЛрдИ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
рддреЛ рдЖрдк рдЗрд╕реЗ рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ:

type CryptoCurrency enum {
  ETH
  XMR
}

рдЗрд╕рд╕реЗ рдбреЗрдЯрд╛ рдореЗрдВ рдмрджрд▓рд╛рд╡ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдПрдирдо рдХреЗ рд╕рднреА рдореВрд▓реНрдп рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЧрдПред рдпрд╣ рддреБрдореНрд╣рд╛рд░реЗ рд▓рд┐рдП рдареАрдХ рд╣реИред рдЖрдк рдЕрдкрдиреЗ рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдкрдХреЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ, рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдЗрддрдиреА рддреЗрдЬрд╝реА рд╕реЗ рдЖрдЧреЗ рдирд╣реАрдВ рдмрдврд╝ рд░рд╣реЗ рд╣реИрдВ, рдХреБрдЫ рдХреЗ рдкрд╛рд╕ рд╕рдВрд╕рд╛рдзрди рдирд╣реАрдВ рд╣реИрдВ рдпрд╛ рдХрдИ рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрдирд╕реЗ рдбреЗрдЯрд╛ рдирд┐рдЧрд▓рдирд╛ рд╣реИред рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ 2 рдПрдирдо рд╣реЛрдВрдЧреЗ: рдкреБрд░рд╛рдирд╛ рдФрд░ рдирдпрд╛; рдФрд░ рджреЛрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдПрдХ рдбреЗрдЯрд╛ рдореИрдкрд░ред
рдпрд╣ рд╣рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЙрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рдорд╛рдиреНрдп рдФрд░ рдорд╛рд░реНрд╢рд▓/рдЕрдирдорд░реНрд╢рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдирдо рдФрд░ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рднрд╛рд╖рд╛ рдХрд╛ рд▓рдЪреАрд▓рд╛рдкрди рджреЗрдирд╛ рд╣реИред

type CryptoCurrency enum {
  ETH = 1, // reminds const?
  XMR = 2
}
// this is real life case 
v := 3
if v is CryptoCurrency {
 // right?
} else {
 // nope, provide default value
 v = CryptoCurrency.ETH
}

рд╣рдореЗрдВ рдПрдирдо рдХреА рдкреНрд░рдпреЛрдЬреНрдпрддрд╛ рдФрд░ рдорд╛рдорд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рд╣реЛрдЧрд╛ред

рд╣рдо 2 рдирдП рдХреАрд╡рд░реНрдб рд╕реАрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдпрд╣ рд╣рдореЗрдВ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рдХреА рд╣рдЬрд╛рд░реЛрдВ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИред

рдордзреНрдп рдореИрджрд╛рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрди рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдПрдирдо рдореВрд▓реНрдпреЛрдВ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд░рдЦрддрд╛ рд╣реИ рдЬреЛ рд╡реЗ рдореВрд▓реНрдп рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдирдо рдкреНрд░рдХрд╛рд░ рдХрд╛рдлреА рд╣рдж рддрдХ рд╡рд╣реА рд░рд╣рддрд╛ рд╣реИ - рдпрд╣ рдирд╛рдорд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реИред рдПрдирдо рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЪрд░ рдПрдирдо рдХреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп рдХреЗ рдмрд░рд╛рдмрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рдЙрд╕рдХреЗ рдКрдкрд░ рдЬреЛ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рд╡рд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореВрд▓реНрдп рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдХреНрдпрд╛ рдЗрд╕рдореЗрдВ рдПрдХ рд╡реИрдз рдПрдирдо рдорд╛рди рд╣реИ рдпрд╛ рдирд╣реАрдВред рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧрд┐рдлрд┐рдХреЗрд╢рди рдЬреИрд╕реЗ рдЕрдиреНрдп рдмреЛрдирд╕ рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдмрд╣реБрдд рдмрд╛рд░ рдореИрдВ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╣реЛрддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдореЗрд░реЗ рдкрд╛рд╕ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ (рдкреНрд░реЛрдЯреЛрдмрдл рдпрд╛ рдереНрд░рд┐рдлреНрдЯ) рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдЬрдЧрд╣ рдПрдирдо рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рд╣реЛрддрд╛ рд╣реИред рдореБрдЭреЗ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдирд╛ рд╣реИ рдФрд░, рдпрджрд┐ рдПрдирдо рдорд╛рди рдореЗрд░реЗ рд▓рд┐рдП рдЕрдЬреНрдЮрд╛рдд рд╣реИ, рддреЛ рдЙрд╕ рд╕рдВрджреЗрд╢ рдХреЛ рдлреЗрдВрдХ рджреЗрдВ рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдХрд░реЗрдВред рдореЗрд░реЗ рдкрд╛рд╕ рдЙрд╕ рддрд░рд╣ рдХреЗ рд╕рдВрджреЗрд╢ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдФрд░ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдЙрди рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЬрд╣рд╛рдВ рдПрдирдо рдХреЗрд╡рд▓ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ, рдореЗрд░реЗ рдкрд╛рд╕ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдВрдпреЛрдЬрдиреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдФрд░ рдХреЛрдИ рд░рд╛рд╕реНрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рдореЗрдВ рдХреЛрдб рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдЧрд▓рддрд┐рдпрд╛рдБ рд╣реЛрдирд╛ рддрдп рд╣реИред рд╕реА # рдЬреИрд╕реЗ рдХреБрдЫ рдХреЗ рд╕рд╛рде рдореИрдВ рдПрдирдо рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕рдорд░реНрдерди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдЬреЛ рдмрд╣реБрдд рд╕рдордп рдмрдЪрд╛рддрд╛ рд╣реИред рдХреБрдЫ рдкреНрд░реЛрдЯреЛрдмрдл рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ рддреЛ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджреЗрдВред рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐ рд▓реЙрдЧрд┐рдВрдЧ рдХрд┐рддрдиреА рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддреА рд╣реИ - рдЖрдкрдХреЛ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрдЯреЛрдмрдл рдЖрдкрдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░рд┐рдВрдЧрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рд╕рдмрдХреБрдЫ рдкреНрд░реЛрдЯреЛрдмрдл рдирд╣реАрдВ рд╣реИред

рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рд╣рд╛рдпрдХ рд╣реЛрддреА рд╣реИ рдЬрд╣рд╛рдВ рдЖрдк рд╕рдВрджреЗрд╢реЛрдВ рдХреЛ рдлреЗрдВрдХрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рд╕рд╛рде рдХреБрдЫ рдХрд░реЗрдВ, рднрд▓реЗ рд╣реА рд╡рд╣ рдЕрдорд╛рдиреНрдп рд╣реЛред рдХреНрд▓рд╛рдЗрдВрдЯ рдЖрдорддреМрд░ рдкрд░ рд╕рдВрджреЗрд╢ рдХреЛ рдлреЗрдВрдХ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╕рд░реНрд╡рд░ рдХреА рддрд░рдл рдЕрдХреНрд╕рд░ рдЖрдкрдХреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕рдм рдХреБрдЫ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕рд╛рдордЧреНрд░реА рдХреЛ рдлреЗрдВрдХрдирд╛ рд╡рд╣рд╛рдВ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИред

рддреЛ рдореЗрд░реЗ рд▓рд┐рдП рдПрдирдо рдореВрд▓реНрдпреЛрдВ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдореЗрдВ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдп рд╣реИред рдпрд╣ рдореБрдЭреЗ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреЛрдб рдХреА рд╣рдЬрд╛рд░реЛрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдмрдЪрд╛рдПрдЧрд╛ рдЬреЛ рд╕рддреНрдпрд╛рдкрди рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд╕рд╛рди рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реНрдЯреНрд░рд┐рдВрдЧрд░-рдЯреВрд▓ рдореЗрдВ рдореМрдЬреВрдж рд╣реИред рдпрджрд┐ рдХреЛрдИ рдЙрдкрдХрд░рдг рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк enumer Foo рдХрд╣рддреЗ рд╣реИрдВ, рдЬреЛ Foo рдХреЗ рд▓рд┐рдП Foo fmt.Stringer рд╡рд┐рдзрд┐рдпрд╛рдБ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдЧрд╛ рдФрд░ (рдХрд╣рддреЗ рд╣реИрдВ) рдПрдХ Known() bool рд╡рд┐рдзрд┐ рдЬреЛ рдЬрд╛рдБрдЪрддреА рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдореВрд▓реНрдп рдЬреНрдЮрд╛рдд рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реАрдорд╛ рдореЗрдВ рд╣реИ, рддреЛ рдХреНрдпрд╛ рдЗрд╕рд╕реЗ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ рдХрдо рд╣реЛ рдЬрд╛рдПрдВрдЧреА?

@Merovius рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдореЗрдВ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдо рддреМрд░ рдкрд░ рдСрдЯреЛрдЬреЗрди рдХреЗ рдЦрд┐рд▓рд╛рдл рд╣реВрдВред рдХреЗрд╡рд▓ рд╡рд╣реА рдорд╛рдорд▓рд╛ рдЬрд╣рд╛рдВ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд╣реИ рдФрд░ рдмрд╕ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдкреНрд░реЛрдЯреЛрдмрдл рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдкрдХреЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕реНрдерд┐рд░ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИ рдЬрд┐рд╕реЗ рдПрдХ рдмрд╛рд░ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдПрдирдо рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рдмреИрд╕рд╛рдЦреА рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред рдФрд░ рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЧреЛ рдХреИрд╕реЗ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдЬреЛ рднрд╛рд╖рд╛ рдХреЗ рджрд░реНрд╢рди рдХреЗ рдЦрд┐рд▓рд╛рдл рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реИред рднрд╛рд╖рд╛ рдХреА рдорджрдж рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрдк рдЗрд╕ рдмреБрдирд┐рдпрд╛рджреА рдврд╛рдВрдЪреЗ рдХреЛ рдЗрд╕рдХреЗ рдКрдкрд░ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рднрд╛рд╖рд╛ рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рддрдВрддреНрд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирд╣реАрдВ рд╣реИред рдмрд╛рд╣рд░реА рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджреЗрдВ, рди рдХрд┐ рднрд╛рд╖рд╛ рдореЗрдВ рдЬреЛ рдХрдореА рд╣реИ рдЙрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред

. рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдПрдирдо рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░рдХрд╛рд░ рдХреА рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рдмреИрд╕рд╛рдЦреА рдЬреИрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИред

рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╣реИ - рдЧреЛ рдХреА рдЯрд╛рдЗрдк рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рд╕рд┐рджреНрдз рдФрд░ рдЬрд╛рдирдмреВрдЭрдХрд░ рд╕рд░рд▓ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╣ рд╕рд╡рд╛рд▓ рдирд╣реАрдВ рдерд╛, рд╕рд╡рд╛рд▓ рдпрд╣ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рдХрдо рдХрд░реЗрдЧрд╛ред "рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ" рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдпрджрд┐ рдЖрдк рд╡реИрд╕реЗ рднреА рдЦреБрд▓реЗ рдПрдирдо рдорд╛рдирддреЗ рд╣реИрдВ)ред

рдФрд░ рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдЧреЛ рдХреИрд╕реЗ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдЬреЛ рднрд╛рд╖рд╛ рдХреЗ рджрд░реНрд╢рди рдХреЗ рдЦрд┐рд▓рд╛рдл рдорд╣рд╕реВрд╕ рдХрд░рддрд╛ рд╣реИред

рдЧреЛ "рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ" рдирд╣реАрдВ рд╣реИред рдЗрджрд░реАрд╕ рдЬреИрд╕реА рднрд╛рд╖рд╛рдПрдВ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИрдВред рдЧреЛ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдХреА рдЗрдВрдЬреАрдирд┐рдпрд░рд┐рдВрдЧ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ рдФрд░ рдЗрд╕ рддрд░рд╣ рдЗрд╕рдХрд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╡рд╣ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреА рдкреНрд░рдХрд╛рд░ рдкреНрд░рдгрд╛рд▓реА рдПрдкреАрдЖрдИ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдХрд╛рд░рдг рдмрдЧ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдФрд░ рдХреБрдЫ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рддреА рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЬрд╛рдирдмреВрдЭрдХрд░ рд╕рд░рд▓ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рд╕реАрдЦрдиреЗ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ, рдХреЛрдбрдмреЗрд╕ рдХреЗ рд╡рд┐рдЪрд▓рди рдХреЛ рдХрдо рдХрд░рдиреЗ рдФрд░ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдХреЛрдб рдХреА рдкрдардиреАрдпрддрд╛ рдХреЛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдПред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рдЖрдк рдЬрд┐рд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ (рдЦреБрд▓реЗ рдПрдирдо) рдХреЛ рднрд╛рд╖рд╛ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдмрд┐рдирд╛ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рдЙрдкрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рдЬреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрдардиреАрдп рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЧреЛ рдХреЗ рджрд░реНрд╢рди рдХреЗ рдЕрдиреБрд░реВрдк рд▓рдЧрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдПрдХ рдирдИ рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛ рдЬреЛрдбрд╝рдирд╛ рдЬреЛ рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╕рдмрд╕реЗрдЯ рд╣реИ, рдЧреЛ рдХреЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд▓рдЧрддреА рд╣реИред

рддреЛ, рджреЛрд╣рд░рд╛рдиреЗ рдХреЗ рд▓рд┐рдП: рдпрд╣ рд╕рд╣рд╛рдпрдХ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдЙрд╕ рдЙрдкрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдпрджрд┐ рдХреБрдЫ рдФрд░ рдирд╣реАрдВ рд╣реИ, рддреЛ рдпрд╣ рд╕рдордЭрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡реИрд╕реЗ рднреА .

рдореИрдВрдиреЗ рдЪрд░реНрдЪрд╛ рд╕реЗ рдХреБрдЫ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рд╣реИ, рдЖрдк рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реИрдВ?

рдХреБрдЫ рдмреБрдирд┐рдпрд╛рджреА рдЬрд╛рдирдХрд╛рд░реА:

  1. рдЖрдк рд╣рд░ рджреВрд╕рд░реЗ рдкреНрд░рдХрд╛рд░ рдХреА рддрд░рд╣ рдПрдХ рдПрдирдо рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
  2. рд╡реЗ рдПрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреА рддрд░рд╣ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдо рдХреЗ рд╕рд╛рдеред рдХрд╛рд░рдг: рд╡рд░реНрддрдорд╛рди рдЖрдИрдУрдЯрд╛-рдПрдирдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдк рд╕рдВрднрд╡рддрдГ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдЙрдкрд╕рд░реНрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдирдо рдХрд╛ рдирд╛рдо рд▓рд┐рдЦреЗрдВрдЧреЗред рдЗрд╕ рдлреАрдЪрд░ рд╕реЗ рдЖрдк рдмрд╕ рдЗрд╕рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВред
  3. рд╡реЗ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реИрдВ рдФрд░ рд╣рд░ рджреВрд╕рд░реЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  4. рдЖрдк enums рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЬрдм рдЖрдк рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдПрдХ рдирдХреНрд╢реЗ рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддреЗ рд╣реИрдВред рдХреБрдВрдЬреА рдПрдирдо рдирд╛рдо рд╣реИ, рдорд╛рди рдПрдирдо рдорд╛рди рд╣реИред
  5. рдЖрдк рдПрдХ рдПрдирдо рдореЗрдВ рд╡рд┐рдзрд┐рдпрд╛рдБ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдЖрдк рд╣рд░ рджреВрд╕рд░реЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред
  6. рдкреНрд░рддреНрдпреЗрдХ рдПрдирдо рдорд╛рди рдХреЛ рд╕реНрд╡рдд: рдЬреЗрдирд░реЗрдЯ рдХреА рдЧрдИ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ:
  7. Name() рдПрдирдо рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдирд╛рдо рд▓реМрдЯрд╛рдПрдЧрд╛
  8. Index() рдПрдирдо рдЗрдВрдбреЗрдХреНрд╕ рд▓реМрдЯрд╛рдПрдЧрд╛, рдЬреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдврд╝ рд░рд╣рд╛ рд╣реИред рдпрд╣ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рд╕рд░рдгреА рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред

рдХреЛрдб:
```рдЬрд╛рдУ
рдкреИрдХреЗрдЬ рдореБрдЦреНрдп

// рдЙрджрд╛рд╣рд░рдг рдП
рдЯрд╛рдЗрдк рдХрдВрдЯреНрд░реА рдПрдирдо [рд╕реНрдЯреНрд░рдХреНрдЪрд░] {// рдПрдирдо рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдмреА рджреЗрдЦреЗрдВ)
рдСрд╕реНрдЯреНрд░рд┐рдпрд╛ ("рдПрдЯреА", "рдСрд╕реНрдЯреНрд░рд┐рдпрд╛", рдЭреВрдард╛) // рдПрдХ рдХреЙрдиреНрд╕ рдХреА рддрд░рд╣ рд╕реБрд▓рдн рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде
рдЬрд░реНрдордиреА ("DE", "рдЬрд░реНрдордиреА", рд╕рддреНрдп) // рдЙрдкрд╕рд░реНрдЧ (рдЬреИрд╕реЗ рджреЗрд╢ред рдСрд╕реНрдЯреНрд░рд┐рдпрд╛)

//The struct will automatically begin when it doesn't match the format EnumName(...) anymore
Code, CountryName string
HasMerkel bool //Totally awesome

}

// Enums рдореЗрдВ рд╣рд░ рджреВрд╕рд░реЗ рдкреНрд░рдХрд╛рд░ рдХреА рддрд░рд╣ рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ
func (рд╕реА рджреЗрд╢) рдкрд░реАрдХреНрд╖рдг () {}

func рдореБрдЦреНрдп () {
println (рджреЗрд╢ред рдСрд╕реНрдЯреНрд░рд┐рдпрд╛ред рджреЗрд╢ рдХрд╛ рдирд╛рдо) // рдСрд╕реНрдЯреНрд░рд┐рдпрд╛
рдкреНрд░рд┐рдВрдЯреНрд▓рди (рджреЗрд╢.рдЬрд░реНрдордиреА.рдХреЛрдб) // рдбреАрдИ

/* Prints:
Austria
0
Germany
1
 */
for name, country := range Country {
    println(name) //Austria
    println(name == country.Name()) //true ; also autogenerated 
    println(country.Index()) //Auto generated increasing index
}

}

// рдЙрджрд╛рд╣рд░рдг рдмреА
рдХреВрд▓рдиреЗрд╕ рдПрдирдо рдЯрд╛рдЗрдк рдХрд░реЗрдВ [int] {
рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛(10)
рдХреВрд▓(5)
рдиреЙрдЯрдХреВрд▓(0)
}```

@sinnlosername рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ enums рдХреБрдЫ рдРрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛред рдкрд┐рдЫрд▓реА рдЪрд░реНрдЪрд╛ рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХреБрдЫ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд╕рдВрдпреЛрдЬрди рд╕реЗ рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдПрдХ рдПрдирдо рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛:

рдШреЛрд╖рдгрд╛

type Day enum {
    Monday
    Tuesday
    ...
    Sunday
}

рд╕реНрдЯреНрд░рд┐рдВрдЧ рд░реВрдкрд╛рдВрддрд░рдг ( Stringer рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ):

func (d Day) String() string {
    switch d {
    case Monday:
        return "mon"
    case Tuesday:
        return "tues"
    ...
    case Sunday:
        return "sun"
    }
}

рдпрд╣ рдЗрддреНрдирд╛ рдЖрд╕рд╛рди рд╣реИред рдЗрд╕рдХрд╛ рд▓рд╛рдн рдЪрд╛рд░реЛрдВ рдУрд░ рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╕рдордп рдордЬрдмреВрдд рдкреНрд░рдХрд╛рд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд░рд╣рд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдЙрдкрдпреЛрдЧ

func IsWeekday(d Day) bool {
    return d != Saturday && d != Sunday
}

рдЕрдЧрд░ рдореИрдВ string Day рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ IsWeekday рдХрд╣реЗрдЧрд╛ рдХрд┐ рдХреЛрдИ рднреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЬреЛ "sat" рдпрд╛ "sun" рдирд╣реАрдВ рд╣реИ рдПрдХ рдХрд╛рд░реНрдпрджрд┐рд╡рд╕ рд╣реИ (рдпрд╛рдиреА, IsWeekday("abc") рдХреНрдпрд╛ рд╣реЛрдЧрд╛/рдЪрд╛рд╣рд┐рдП?) рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдКрдкрд░ рджрд┐рдЦрд╛рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдбреЛрдореЗрди рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЗрд╕рдХреЗ рдЗрдирдкреБрдЯ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордЭрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдорд┐рд▓рддреА рд╣реИред

@ljeabmreosn

рдпрд╣ рд╢рд╛рдпрдж рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

func IsWeekday(d Day) bool {
    return d != Day.Saturday && d != Day.Sunday
}

рдореИрдВрдиреЗ рднрд╛рд╖рд╛ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рддрд░реАрдХреЗ рд╕реЗ рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЛрд▓рдВрдЧ рдЯреАрдо рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред рдореИрдВ рд╣рд░ рдХрд┐рд╕реА рдХреЛ рд░рд╕реНрдЯ рд▓реИрдВрдЧ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗ рд╕рдХрддрд╛ рд╣реВрдБ, рдЗрд╕рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рднреА рд╡рд╛рдВрдЫрд┐рдд рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдПрдирдо рдФрд░ рдЬреЗрдирд░рд┐рдХ рдФрд░ рдмрд╣реБрдд рдХреБрдЫред

рд╣рдо 14. рдордИ 2018 рдореЗрдВ рд╣реИрдВ рдФрд░ рд╣рдо рдЕрднреА рднреА рдПрдирдо рд╕рдорд░реНрдерди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реИрдВред рдореЗрд░рд╛ рдорддрд▓рдм, рдирд░реНрдХ рдХреНрдпрд╛ рд╣реИ? рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рдЧреЛрд▓рд╛рдВрдЧ рд╕реЗ рдирд┐рд░рд╛рд╢ рд╣реВрдВред

рдореИрдВ рд╕рдордЭ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдХрд┐рд╕реА рд╕реБрд╡рд┐рдзрд╛ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рддрд░рд╣ рдХреА рдЧреИрд░-рд░рдЪрдирд╛рддреНрдордХ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рд╕реЗ рдХреЛрдИ рдорджрдж рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИред рдХреГрдкрдпрд╛ рдЕрдкрдиреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░реЗрдВред https://golang.org/conduct рджреЗрдЦреЗрдВред

рдзрдиреНрдпрд╡рд╛рджред

@agnivade рдореБрдЭреЗ @rudolfschmidt рд╕реЗ рд╕рд╣рдордд рд╣реЛрдирд╛ рд╣реИред GoLang рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореЗрд░реА рдкрд╕рдВрджреАрджрд╛ рднрд╛рд╖рд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реБрд╡рд┐рдзрд╛рдУрдВ, рдПрдкреАрдЖрдИ рдХреА рдХрдореА рдФрд░ рдЧреЛ рдХреНрд░рд┐рдПрдЯрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдкрд┐рдЫрд▓реА рдЧрд▓рддрд┐рдпреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдпрд╛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░рддрд┐рд░реЛрдз рд╣реИред рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдордп рдореЗрд░реЗ рдкрд╛рд╕ рдХреЛрдИ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╕реНрдерд▓ рдореЗрдВ рдЕрдкрдиреЗ рдирд╡реАрдирддрдо рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реА рднрд╛рд╖рд╛ рдЪреБрдирдиреА рд╣реИ, рдЗрд╕рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рдирд╣реАрдВ рдерд╛ред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕рдХреА рд╕рднреА рдХрдорд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╣реИред рд▓реЗрдХрд┐рди рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ GoLang рдореЗрдВ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдкрд░ рдЕрддреНрдпрд╛рдЪрд╛рд░ рдХрд░рдиреЗ рдЬреИрд╕рд╛ рд╣реИ ;-)

рдореИрдВрдиреЗ рднрд╛рд╖рд╛ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рддрд░реАрдХреЗ рд╕реЗ рд╕реБрдзрд╛рд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЛрд▓рдВрдЧ рдЯреАрдо рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рдирд╛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред

  • рдЖрд╡рд╢реНрдпрдХ рд╢рдмреНрдж рдХрд╛ рдЕрд░реНрде "рдореИрдВ рдЬреЛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ" рдирд╣реАрдВ рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЖрдзреБрдирд┐рдХ рднрд╛рд╖рд╛ рдХреА рдореВрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред GoLang рдореЗрдВ рдХреБрдЫ рдЕрдЪреНрдЫреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд░реВрдврд╝рд┐рд╡рд╛рджреА рд░рд╣рддреА рд╣реИ рддреЛ рдпрд╣ рдЬреАрд╡рд┐рдд рдирд╣реАрдВ рд░рд╣реЗрдЧреАред рдЬреЛ рд▓реЛрдЧ рдЙрдиреНрд╣реЗрдВ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЙрдирдХреЗ рд▓рд┐рдП рдПрдирдо рдпрд╛ рдЬреЗрдирд░рд┐рдХ рдЬреИрд╕реА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдХреЛрдИ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рдХрдИ рдлрд╛рдпрджреЗ рд╣реИрдВ рдЬреЛ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдФрд░ рдореБрдЭреЗ рдордд рдмрддрд╛рдУ "рд▓реЗрдХрд┐рди рдЧреЛ рд╕рд░рд▓ рд░рд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ"ред "рд╕рд░рд▓" рдФрд░ "рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдирд╣реАрдВ" рдХреЗ рдмреАрдЪ рдПрдХ рдмрдбрд╝рд╛ рдЕрдВрддрд░ рд╣реИред рдЬрд╛рд╡рд╛ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ рдЬреЛ рдЧрд╛рдпрдм рд╣реИрдВред рддреЛ рдпрд╛ рддреЛ рдЬрд╛рд╡рд╛ рджреЗрд╡ рдЬрд╛рджреВрдЧрд░ рд╣реИрдВ рдпрд╛ рдпрд╣ рддрд░реНрдХ рд╕рд┐рд░реНрдл рдЦрд░рд╛рдм рд╣реИред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЖрдзреБрдирд┐рдХ рднрд╛рд╖рд╛ рдХреА рдореВрд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдБ рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред

рдЬрд╝рд░реВрд░ред рдЙрди рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЯреНрдпреВрд░рд┐рдВрдЧ рдкреВрд░реНрдгрддрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред _рд╕рдм рдХреБрдЫ_ рдПрдХ рдбрд┐рдЬрд╝рд╛рдЗрди рд╡рд┐рдХрд▓реНрдк рд╣реИред рдЯреНрдпреВрд░рд┐рдВрдЧ рдкреВрд░реНрдгрддрд╛ рдФрд░ рд╕реА ++ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП) рдХреЗ рдмреАрдЪ рдмрд╣реБрдд рд╕реА рдЬрдЧрд╣ рд╣реИ рдФрд░ рдЙрд╕ рдЬрдЧрд╣ рдореЗрдВ рдЖрдк рдмрд╣реБрдд рд╕рд╛рд░реА рднрд╛рд╖рд╛рдПрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рддрд░рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рд╡реИрд╢реНрд╡рд┐рдХ рдЗрд╖реНрдЯрддрдо рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред

GoLang рдореЗрдВ рдХреБрдЫ рдЕрдЪреНрдЫреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ рд░реВрдврд╝рд┐рд╡рд╛рджреА рд░рд╣рддреА рд╣реИ рддреЛ рдпрд╣ рдЬреАрд╡рд┐рдд рдирд╣реАрдВ рд░рд╣реЗрдЧреАред

рд╕рдВрднрд╡рддрдГред рдЕрдм рддрдХ рдпрд╣ рдмрдврд╝ рд░рд╣рд╛ рд╣реИред рдЖрдИрдПрдордУ, рдЕрдЧрд░ рдпрд╣ рд░реВрдврд╝рд┐рд╡рд╛рджреА рдирд╣реАрдВ рд╣реЛрддрд╛ рддреЛ рдпрд╣ рдЕрднреА рднреА рдирд╣реАрдВ рдмрдврд╝ рд░рд╣рд╛ рд╣реЛрддрд╛ред рд╣рдо рджреЛрдиреЛрдВ рдХреА рд░рд╛рдп рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рд╣реИ рдФрд░ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдореВрд▓реНрдпрд╡рд╛рди рдирд╣реАрдВ рд╣реИред рдпрд╣ рдбрд┐рдЬрд╛рдЗрдирд░реЛрдВ рдХрд╛ рдЕрдиреБрднрд╡ рдФрд░ рд╕реНрд╡рд╛рдж рд╣реИ рдХрд┐ рдирд┐рдпрдо рдХреНрдпрд╛ рд╣реИрдВред рдПрдХ рдЕрд▓рдЧ рд░рд╛рдп рд░рдЦрдирд╛ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рдХрд┐ рдбрд┐рдЬрд╛рдЗрдирд░ рдЗрд╕реЗ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВрдЧреЗред

рдмреАрдЯреАрдбрдмреНрд▓реНрдпреВ, рдЕрдЧрд░ рдореИрдВ рдХрд▓реНрдкрдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдЬ рдЧреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рд▓реЛрдЧреЛрдВ рдХреА рдорд╛рдВрдЧ рдХреА 10% рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЕрдкрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╢рд╛рдпрдж рдЕрдм рддрдХ рдореИрдВ рдЧреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реВрдБрдЧрд╛ред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдкрдиреЗ рдореЗрд░реЗ рдЙрддреНрддрд░ рдХреЗ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рддрд░реНрдХ рдХреЛ рдпрд╛рдж рдХрд┐рдпрд╛ред рд╢рд╛рдпрдж рдЗрд╕рд▓рд┐рдП рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд╣реА рдЧрдИ рдХреБрдЫ рдмрд╛рддреЛрдВ рдХрд╛ рдкреНрд░рддрд┐рд╡рд╛рдж рд╣реИред

"рдПрдирдо рдпрд╛ рдЬреЗрдирд░рд┐рдХ рдЬреИрд╕реА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рдХрдИ рдлрд╛рдпрджреЗ рд╣реИрдВ рдЬреЛ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред"

рдФрд░ рдЖрдкрдХреЛ рдХреНрдпреЛрдВ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд░реВрдврд╝рд┐рд╡рд╛рджрд┐рддрд╛ рдЧреЛрд▓рдВрдЧ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдХрд╛рд░рдг рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЧреЛрд▓рд╛рдВрдЧ рдХреА рджрдХреНрд╖рддрд╛ рдФрд░ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдорд╣рд╛рди рд╕реЗрдЯ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛрдиреЗ рдХреА рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдЬрд╛рд╡рд╛ рдиреЗ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА "рджреБрд░реНрдШрдЯрдирд╛" рдХрд╛ рдЕрдиреБрднрд╡ рдХрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЬрд╛рд╡рд╛ 9 рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЪреАрдЬреЛрдВ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рд╢рд╛рдпрдж рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЛ рдПрдХ рд╡рд┐рдХрд▓реНрдк рдЦреЛрдЬрдирд╛ рдкрдбрд╝рд╛ред рд▓реЗрдХрд┐рди рдЗрд╕ рджреБрд░реНрдШрдЯрдирд╛ рд╕реЗ рдкрд╣рд▓реЗ рдЬрд╛рд╡рд╛ рдХреЛ рджреЗрдЦреЗрдВред рдпрд╣ рд▓рдЧрд╛рддрд╛рд░ рдмрдврд╝ рд░рд╣рд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдорд┐рд▓реАрдВ рдЬрд┐рд╕рд╕реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд╛ рдЬреАрд╡рди рдЖрд╕рд╛рди рд╣реЛ рдЧрдпрд╛ред

"рдПрдирдо рдпрд╛ рдЬреЗрдирд░рд┐рдХ рдЬреИрд╕реА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдирдХреЗ рдХрдИ рдлрд╛рдпрджреЗ рд╣реИрдВ рдЬреЛ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред"

рдпрд╣ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдЪ рдирд╣реАрдВ рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╕реБрд╡рд┐рдзрд╛ рдЕрдВрддрддрдГ рдЗрд╕реЗ рдЙрд╕ stdlib рдФрд░/рдпрд╛ рдкреИрдХреЗрдЬ рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдЧреА рдЬрд┐рд╕реЗ рдореИрдВ рдЖрдпрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред _рд╕рднреА_ рдХреЛ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реЛрдЧрд╛, рдЪрд╛рд╣реЗ рдЙрдиреНрд╣реЗрдВ рдкрд╕рдВрдж рдХрд┐рдпрд╛ рдЬрд╛рдП рдпрд╛ рдирд╣реАрдВред

рдЕрдм рддрдХ рдпрд╣ рдмрдврд╝ рд░рд╣рд╛ рд╣реИред рдЖрдИрдПрдордУ, рдЕрдЧрд░ рдпрд╣ рд░реВрдврд╝рд┐рд╡рд╛рджреА рдирд╣реАрдВ рд╣реЛрддрд╛ рддреЛ рдпрд╣ рдЕрднреА рднреА рдирд╣реАрдВ рдмрдврд╝ рд░рд╣рд╛ рд╣реЛрддрд╛

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕рдХреА рдзреАрдореА рд╡реГрджреНрдзрд┐ (рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рд░реВрдврд╝рд┐рд╡рд╛рдж рдХреЗ рдХрд╛рд░рдг рд╣реИ, рдмрд▓реНрдХрд┐ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдореМрдЬреВрджрд╛ рд╕реЗрдЯ, рдЯреВрд▓рд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рд╣реИред рд╡рд╣реА рдореБрдЭреЗ рдпрд╣рд╛рдВ рд▓реЗ рдЖрдпрд╛ред рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдЙрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ред

рдЕрдЧрд░ рд╣рдо C# рдФрд░ рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ Rust/Swift рдХреЛ рджреЗрдЦреЗрдВред рд╡реЗ рдкрд╛рдЧрд▓ рдЬреИрд╕реА рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВред рд╕реА # рдЕрднреА рднреА рд╢реАрд░реНрд╖ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдКрдкрд░ рдФрд░ рдиреАрдЪреЗ рдЙрддрд╛рд░-рдЪрдврд╝рд╛рд╡ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЯрд╛рдЗрдкрд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдмрдврд╝ рд░рд╣рд╛ рд╣реИред рдЬрдВрдЧ/рд╕реНрд╡рд┐рдлреНрдЯ рдХреЗ рд▓рд┐рдП рд╡рд╣реАред рджреВрд╕рд░реА рдУрд░, 2009 рдФрд░ 2016 рдореЗрдВ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдореЗрдВ рд╡рд┐рд╕реНрдлреЛрдЯ рд╣реБрдЖред рд▓реЗрдХрд┐рди рдЙрд╕рдХреЗ рдмреАрдЪ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдмрдврд╝ рд░рд╣рд╛ рдерд╛ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╣рд╛рд░ рд░рд╣рд╛ рдерд╛ред рдирдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЛ рдХреЗ рдкрд╛рд╕ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ рдЕрдЧрд░ рд╡реЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рдереЗ рдФрд░ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЗрд╕реЗ рдкрд╣рд▓реЗ рдирд╣реАрдВ рдЪреБрдирд╛ рдерд╛ред рдареАрдХ рдЗрд╕рд▓рд┐рдП рдХреНрдпреЛрдВрдХрд┐ рдЧреЛ рдЕрдкрдиреЗ рдбрд┐рдЬрд╛рдЗрди рдореЗрдВ рд╕реНрдерд┐рд░ рд╣реИред рдЕрдиреНрдп рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдлреАрдЪрд░ рдЬреЛрдбрд╝рдиреЗ рдХреА рд╡рдЬрд╣ рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЙрдирдХреЗ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рд▓рд┐рдП рдХрд┐ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЖрдзрд╛рд░ рдЗрд╕рдХреА рдорд╛рдВрдЧ рдХрд░рддрд╛ рд╣реИред рд▓реЛрдЧреЛрдВ рдХреЛ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрдирдХрд╛ рдХреЛрдб рдЖрдзрд╛рд░ рд▓рдЧрд╛рддрд╛рд░ рдмрджрд▓рддреЗ рд╕рдорд╕реНрдпрд╛ рдбреЛрдореЗрди рдореЗрдВ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдмрдирд╛ рд░рд╣реЗред async/рдкреНрд░рддреАрдХреНрд╖рд╛ рдХреА рддрд░рд╣ред рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рдХрд┐ рдЕрдм рдЖрдк рдЗрд╕реЗ рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдЕрдВрдд рдореЗрдВ рдЧреЛ 2 рд╣реЛрдЧрд╛ рдФрд░ рдЖрдк рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрдИ рдирдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рд▓рд╛рдПрдЧрд╛ред рдЗрд╕рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐ рдпрд╣ рдирдпрд╛ рдФрд░ рдЪрдордХрджрд╛рд░ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рд▓рд┐рдП рдХрд┐ рдирдИ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдХрд┐рд╕реА рдХреЛ рдЕрдВрддрддрдГ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдпрд╛ рдЗрд╕реЗ рдЖрдЬрд╝рдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдордирд╛ рд╕рдХрддреА рд╣реИрдВред рдпрджрд┐ рд░реВрдврд╝рд┐рд╡рд╛рджрд┐рддрд╛ рдЗрддрдиреА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛрддреА рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдпреЗ рдкреНрд░рд╕реНрддрд╛рд╡ рднреА рд╣реЛрддреЗред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЗрд╕рдХреА рдзреАрдореА рд╡реГрджреНрдзрд┐ (рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рд░реВрдврд╝рд┐рд╡рд╛рдж рдХреЗ рдХрд╛рд░рдг рд╣реИ, рдмрд▓реНрдХрд┐ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдп, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдореМрдЬреВрджрд╛ рд╕реЗрдЯ, рдЯреВрд▓рд┐рдВрдЧ рдХреЗ рдХрд╛рд░рдг рд╣реИред рд╡рд╣реА рдореБрдЭреЗ рдпрд╣рд╛рдВ рд▓реЗ рдЖрдпрд╛ред

рдФрд░ рдпрд╣ рд░реВрдврд╝рд┐рд╡рд╛рджреА рдордзреБрдордХреНрдЦреА рдкрд╛рд▓рди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред рдЕрдЧрд░ рднрд╛рд╖рд╛ рд╣рд░ [рдЖрдзреЗ] рд╕рд╛рд▓ рдореЗрдВ рдХреБрдЫ/рд╕рдм рдХреБрдЫ рддреЛрдбрд╝ рджреЗрддреА рд╣реИ, рддреЛ рдЖрдк рдЬреЛ рдХреБрдЫ рднреА рдХрд╣рддреЗ рд╣реИрдВ рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЖрдк рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд╣реЗрдВрдЧреЗ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рдЗрд╕реЗ рд▓рд╛рдиреЗ рд╡рд╛рд▓реЗ рдмрд╣реБрдд рдХрдо рд▓реЛрдЧ рд╣реЛрдВрдЧреЗред

рднрд╛рд╖рд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдЙрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ред

рдХреНрдпрд╛ рдЕрд╛рдкрдХреЛ рдЙрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реНрдг рд╡рд┐рд╢рд╡рд╛рд╕ рд╣реИ? рдКрдкрд░ рджреЗрдЦреЛред


BTW, рдХреНрдпрд╛ рдЖрдкрдиреЗ 2017 рдХреЗ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗ рд╣реИрдВ?

рдЕрдЧрд░ рднрд╛рд╖рд╛ рд╣рд░ [рдЖрдзреЗ] рд╕рд╛рд▓ рдореЗрдВ рдХреБрдЫ/рд╕рдм рдХреБрдЫ рддреЛрдбрд╝рддреА рд╣реИ

рдлрд┐рд░ рдХреБрдЫ рдордд рддреЛрдбрд╝реЛред C# рдиреЗ рдмрд╣реБрдд рд╕рд╛рд░реА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЬреЛрдбрд╝реАрдВ рдФрд░ рдЗрд╕рдиреЗ рдХрднреА рднреА рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдЙрдирдХреЗ рд▓рд┐рдП рдпрд╣ рд╡рд┐рдХрд▓реНрдк рднреА рдирд╣реАрдВ рд╣реИред рд╕реА ++ рдХреЗ рд▓рд┐рдП рд╡рд╣реА рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред рдпрджрд┐ рдЧреЛ рдмрд┐рдирд╛ рдХреБрдЫ рддреЛрдбрд╝реЗ рдлреАрдЪрд░ рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЧреЛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдФрд░ рд╕рдВрднрд╡рддрдГ, рдЗрд╕реЗ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

BTW, рдХреНрдпрд╛ рдЖрдкрдиреЗ 2017 рдХреЗ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦреЗ рд╣реИрдВ?

рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА 2017/2018 рдХреЗ рд╕рд░реНрд╡реЗрдХреНрд╖рдгреЛрдВ, TIOBE рд╕реВрдЪрдХрд╛рдВрдХ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдореЗрд░реА рд╕рд╛рдорд╛рдиреНрдп рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред

@cznic
рд╕рднреА рдХреЛ рдЙрдирд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ iota рдПрдирдореНрд╕ рдФрд░ рдореИрдкреНрд╕ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рддрдм рднреА рдЖрдк рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдЕрдЧрд░ рдЖрдкрдХреЛ рдЬреЗрдирд░рд┐рдХ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рдЙрдирдХреЗ рдмрд┐рдирд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЬрд╛рд╡рд╛ рджреЛрдиреЛрдВ рдХрд╛ рд╣реЛрдирд╛ рд╕рдВрднрд╡ рд╣реИред

рдлрд┐рд░ рдХреБрдЫ рдордд рддреЛрдбрд╝реЛред

рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрдИ, рдпрджрд┐ рднрд╛рд╖рд╛ рдореЗрдВ рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реИрдВ, рддреЛ _рдЗрд╕ рдПрдХ рд╕рд╣рд┐рдд_, рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рддреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВред

C# рдиреЗ рдмрд╣реБрдд рд╕рд╛рд░реА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЬреЛрдбрд╝реАрдВ рдФрд░ рдЗрд╕рдиреЗ рдХрднреА рднреА рдкрд╢реНрдЪрдЧрд╛рдореА рд╕рдВрдЧрддрддрд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдирд╣реАрдВ рдХрд┐рдпрд╛ред

рдХреГрдкрдпрд╛ рдЕрдкрдиреЗ рддрдереНрдпреЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ: рд╡рд┐рдЬреБрдЕрд▓ рд╕реА# 2010 рдмреНрд░реЗрдХрд┐рдВрдЧ рдЪреЗрдВрдЬреЗрд╕ ред (рдкрд╣рд▓рд╛ рд╡реЗрдм рдЦреЛрдЬ рдкрд░рд┐рдгрд╛рдо, рдореИрдВ рдХреЗрд╡рд▓ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдХрдорд╛рддреНрд░ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдпрд╛ рдирд╣реАрдВред)

рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА 2017/2018 рдХреЗ рд╕рд░реНрд╡реЗрдХреНрд╖рдгреЛрдВ, TIOBE рд╕реВрдЪрдХрд╛рдВрдХ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдЗрд╕ рдкрд░ рдореЗрд░реА рд╕рд╛рдорд╛рдиреНрдп рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред

рдареАрдХ рд╣реИ, рдлрд┐рд░ рдЖрдк рдХреИрд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рднрд╛рд╖рд╛ рдмрдврд╝рддреА рдирд╣реАрдВ рд╣реИ, рдЬрдмрдХрд┐ рд╕рд░реНрд╡реЗрдХреНрд╖рдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рдЙрддреНрддрд░рджрд╛рддрд╛рдУрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ 70% рд╕рд╛рд▓-рджрд░-рд╕рд╛рд▓ рд╡реГрджреНрдзрд┐ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ?

рдЖрдк "рдмреНрд░реЗрдХрд┐рдВрдЧ рдЪреЗрдВрдЬреЗрд╕" рдХреЛ рдХреИрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ? рдПрдирдо рдпрд╛ рдЬреЗрдирд░рд┐рдХ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рднреА рдЧреЛ рдХреЛрдб рдХреА рд╣рд░ рдкрдВрдХреНрддрд┐ рдХрд╛рдо рдХрд░реЗрдЧреАред

рд╕рднреА рдХреЛ рдЙрдирд╕реЗ рдирд┐рдкрдЯрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ iota рдПрдирдореНрд╕ рдФрд░ рдореИрдкреНрд╕ рдХреЗ рд╕рд╛рде рд▓рд┐рдЦрдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рддрдм рднреА рдЖрдк рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдЕрдЧрд░ рдЖрдкрдХреЛ рдЬреЗрдирд░рд┐рдХ рдкрд╕рдВрдж рдирд╣реАрдВ рд╣реИ, рддреЛ рдЙрдирдХреЗ рдмрд┐рдирд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред рдЬрд╛рд╡рд╛ рджреЛрдиреЛрдВ рдХрд╛ рд╣реЛрдирд╛ рд╕рдВрднрд╡ рд╣реИред

рдореИрдВ рд╕рд╣рдордд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред рдПрдХ рдмрд╛рд░ рднрд╛рд╖рд╛ рдорд┐рд▓ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЬреЗрдирд░рд┐рдХ, рдлрд┐рд░ рднрд▓реЗ рд╣реА рдореИрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реВрдБ, рдлрд┐рд░ рднреА рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдЪрд╛рд░реЛрдВ рдУрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЬрдм рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдПрдкреАрдЖрдИ рдмрджрд▓ рд░рд╣рд╛ рд╣реЛред рдирддреАрдЬрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореИрдВ рдЙрдирд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рднреА рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рдзреАрдорд╛ рдХрд┐рдП рдмрд┐рдирд╛ рднрд╛рд╖рд╛ рдореЗрдВ рдЬреЗрдирд░рд┐рдХ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдЙрд░реНрдл "рдиреЛ рдлреНрд░реА рд▓рдВрдЪ"ред

рдЖрдк "рдмреНрд░реЗрдХрд┐рдВрдЧ рдЪреЗрдВрдЬреЗрд╕" рдХреЛ рдХреИрд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ? рдПрдирдо рдпрд╛ рдЬреЗрдирд░рд┐рдХ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рднреА рдЧреЛ рдХреЛрдб рдХреА рд╣рд░ рдкрдВрдХреНрддрд┐ рдХрд╛рдо рдХрд░реЗрдЧреАред

рдмрд┐рд▓рдХреВрд▓ рдирд╣реАред рдпрд╣ рдХреЛрдб рдЕрдм рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛:

package foo

var enum = 42

рдЖрд╡рд╢реНрдпрдХ рд╢рдмреНрдж рдХрд╛ рдЕрд░реНрде "рдореИрдВ рдЬреЛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ" рдирд╣реАрдВ рд╣реИред

рдЬрд╝рд░реВрд░, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдореЗрд░рд╛ рдорддрд▓рдм рдХрднреА рдирд╣реАрдВ рдерд╛ред рдмреЗрд╢рдХ рдЖрдк рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдРрд╕реА рд╕реБрд╡рд┐рдзрд╛рдПрдВ рдЬрд░реВрд░реА рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореИрдВ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдЬрд░реВрд░реА рдЬрд╡рд╛рдм рджреЗ рд╕рдХрддрд╛ рд╣реВрдВред рдХреБрдЫ рднреА рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╣рдо рдХрд▓рдо рдФрд░ рдХрд╛рдЧрдЬ рдкрд░ рд╡рд╛рдкрд╕ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред

рдЧреЛрд▓рдВрдЧ рдмрдбрд╝реА рдЯреАрдореЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рднрд╛рд╖рд╛ рд╣реЛрдиреЗ рдХрд╛ рджрд╛рд╡рд╛ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдмрдбрд╝реЗ рдХреЛрдб рдмреЗрд╕ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЧреЛрд▓рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рд╕рдХреЗ рд░рдирдЯрд╛рдЗрдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдерд┐рд░ рд╕рдВрдХрд▓рди рдФрд░ рдЯрд╛рдЗрдк рдЪреЗрдХрд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рдПрдирдо рдФрд░ рдЬреЗрдирд░рд┐рдХ рдХреЗ рдмрд┐рдирд╛ рдРрд╕рд╛ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рд╡реЗ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдлреИрдВрд╕реА рдпрд╛ рдЕрдЪреНрдЫреА рднреА рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЧрдВрднреАрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЕрддреНрдпрдВрдд рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡реЗ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЖрдк рдЕрдВрдд рдореЗрдВ рд╣рд░ рдЬрдЧрд╣ рдЗрдВрдЯрд░рдлреЗрд╕{} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕ {} рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдбреЗрдЯрд╛рдЯрд╛рдЗрдк рд╣реЛрдиреЗ рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реИ рддреЛ рдЖрдк рднреА рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЬрдВрдЧ рдЬреИрд╕реЗ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡рд╣ рд╕рдм рд╕рд╛рдорд╛рди рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЧреЛрд▓рдВрдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рднреА рддреЗрдЬрд╝ рд╣реИрдВ рддреЛ рдЖрдкрдХреЛ рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХреНрдпрд╛ рдЧреЛ рдХрд╛ рднрд╡рд┐рд╖реНрдп рдЙрд╕ рдорд╛рдирд╕рд┐рдХрддрд╛ рдХреЗ рд╕рд╛рде рд╣реИ:

рдЖрд╡рд╢реНрдпрдХ рд╢рдмреНрдж рдХрд╛ рдЕрд░реНрде "рдореИрдВ рдЬреЛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ" рдирд╣реАрдВ рд╣реИред

рдореИрдВ рдУрдкрди рд╕реЛрд░реНрд╕ рдореЗрдВ рд╕рднреА рдпреЛрдЧрджрд╛рдиреЛрдВ рдХрд╛ рд╕рдореНрдорд╛рди рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЕрдЧрд░ рдЧреЛрд▓рдВрдЧ рдПрдХ рд╣реЙрдмреА рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИ рддреЛ рдпрд╣ рдареАрдХ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЧреЛрд▓рдВрдЧ рдХреЛ рдЧрдВрднреАрд░рддрд╛ рд╕реЗ рд▓реЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд▓рд╣рд╛рд▓ рдпрд╣ рдХреБрдЫ рдКрдм рдЧрдП рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦрд┐рд▓реМрдирд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдЗрд╕реЗ рдмрджрд▓рдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред

рдПрдкреАрдЖрдИ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдХреЗрд╡рд▓ рдирдП рдПрдкреАрдЖрдИ рд╣рд┐рд╕реНрд╕реЗ рдЬреЗрдирд░рд┐рдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрдВрдЯрд░рдиреЗрдЯ рдореЗрдВ рдЬреЗрдирд░рд┐рдХ рдХреЗ рдмрд┐рдирд╛ рд╣рдореЗрд╢рд╛ рд╡рд┐рдХрд▓реНрдк рд╣реЛрддреЗ рд╣реИрдВред

рдФрд░ рджреЛрдиреЛрдВ, рдереЛрдбрд╝рд╛ рдзреАрдорд╛ рд╕рдВрдХрд▓рди рдФрд░ "рдПрдирдо" рдирд╛рдордХ рдЪрд░ рдиреНрдпреВрдирддрдо рдкреНрд░рднрд╛рд╡ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 99% рд▓реЛрдЧ рдЗрд╕реЗ рдиреЛрдЯрд┐рд╕ рднреА рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЕрдиреНрдп 1% рдХреЛ рдмрд╕ рдХреБрдЫ рдЫреЛрдЯреЗ рдмрджрд▓рд╛рд╡ рдЬреЛрдбрд╝рдиреЗ рд╣реЛрдВрдЧреЗ рдЬреЛ рд╕рд╣рдиреАрдп рд╣реЛрдВред рдпрд╣ рддреБрд▓рдирд╛ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рдХрд╛ рдЖрд░рд╛ рдЬреЛ рдлреВ ... рд╕рдм рдХреБрдЫ рдКрдкрд░ред

рдФрд░ рджреЛрдиреЛрдВ, рдереЛрдбрд╝рд╛ рдзреАрдорд╛ рд╕рдВрдХрд▓рди рдФрд░ "рдПрдирдо" рдирд╛рдордХ рдЪрд░ рдиреНрдпреВрдирддрдо рдкреНрд░рднрд╛рд╡ рд╣реИрдВред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ 99% рд▓реЛрдЧ рдЗрд╕реЗ рдиреЛрдЯрд┐рд╕ рднреА рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЕрдиреНрдп 1% рдХреЛ рдмрд╕ рдХреБрдЫ рдЫреЛрдЯреЗ рдмрджрд▓рд╛рд╡ рдЬреЛрдбрд╝рдиреЗ рд╣реЛрдВрдЧреЗ рдЬреЛ рд╕рд╣рдиреАрдп рд╣реЛрдВред

рд╣рд░ рдХреЛрдИ рдЦреБрд╢ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдХреЛрдИ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрджреНрднреБрдд рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдбрд┐рдЬрд╛рдЗрди рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдЖ рд╕рдХрддрд╛ рд╣реИред рдХреГрдкрдпрд╛ #15292 рдореЗрдВ рдпреЛрдЧрджрд╛рди рдХрд░реЗрдВред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдЧрд░ рдпрд╣ рдПрдХ рдЧреЗрдо рд╣реИ рдЬрд┐рд╕рдХрд╛ рдирд╛рдо "рдореЗрд░реЗ рдкрдХреНрд╖ рдореЗрдВ рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдХрд┐рд╕реА рднреА рдмреИрдХрд┐рдВрдЧ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЦреАрдВрдЪрдирд╛" рд╣реИ, рддреЛ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рднрд╛рдЧ рдирд╣реАрдВ рд▓реЗрддрд╛ рд╣реВрдВред

рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЬреЗрдирд░рд┐рдХ рдХреЗ рд╕рд╛рде рдЧрддрд┐ рдЕрдВрддрд░ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдВрдЦреНрдпрд╛ рд╣реИ?

рдФрд░ рд╣рд╛рдБ, рд╡реЗ рд╕рдВрдЦреНрдпрд╛рдПрдБ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдХреЗрд╡рд▓ рдпрд╣ рдмрддрд╛рдПрдВрдЧреЗ рдХрд┐ "рдПрдирдо" рдирд╛рдордХ рдЪрд░ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИред

рдореИрдВ рд╕рднреА рдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧреЛрдВ рдиреЗ рд╕рджрд╕реНрдпрддрд╛ рд▓реА рд╣реИ, рдЗрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рд╢реНрди рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдФрд░ рдХреИрд╕реЗ рдПрдирдо рдХреЛ рдЧреЛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред "рдХреНрдпрд╛ рдЧреЛ рдПрдХ рдЕрдЪреНрдЫреА рднрд╛рд╖рд╛ рд╣реИ?" рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдкреНрд░рд╢реНрди рдФрд░ "рдХреНрдпрд╛ рдЧреЛ рдХреЛ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдкрд░ рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП?" рд╢рд╛рдпрдж рдПрдХ рдЕрд▓рдЧ рдордВрдЪ рдореЗрдВ рдмреЗрд╣рддрд░ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рддреА рд╣реИред

рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЬреЗрдирд░рд┐рдХ рдХреЗ рд╕рд╛рде рдЧрддрд┐ рдЕрдВрддрд░ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕рдВрдЦреНрдпрд╛ рд╣реИ?

рдирд╣реАрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдХреЛрдИ рдкреЛрд╕реНрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдпрд╣ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рд▓рд╛рдЧрдд рд╢реВрдиреНрдп рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреАред

рдФрд░ рд╣рд╛рдБ, рд╡реЗ рд╕рдВрдЦреНрдпрд╛рдПрдБ рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдХреЗрд╡рд▓ рдпрд╣ рдмрддрд╛рдПрдВрдЧреЗ рдХрд┐ "рдПрдирдо" рдирд╛рдордХ рдЪрд░ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИред

рд╡рд╣ рдорд┐рд▓рд╛ рд╣реБрдЖ рд╣реИред рдордВрджреА рдЬреЗрдирд░рд┐рдХ рдХреЛ рд▓реЗрдХрд░ рдереАред "рдПрдирдо" рдкрд┐рдЫрдбрд╝реА рд╕рдВрдЧрддрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдерд╛ рдФрд░ рдЖрдкрдХреА рдЭреВрдареА "_ рд╣рд░_ рд▓рд╛рдЗрди рдСрдл рдЧреЛ рдХреЛрдб рдЕрднреА рднреА рдПрдирдо рдпрд╛ рдЬреЗрдирд░рд┐рдХ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдХрд╛рдо рдХрд░реЗрдЧрд╛ред" рджрд╛рд╡рд╛ред (рдореЗрд░рд╛ рдЬреЛрд░ рджреЗрддрд╛ рд╣реИ)

@Merovius рддреБрдо рдХрдареЛрд░ рд╣реЛ, рдореИрдВ рдЕрдм рдЪреБрдк рд╣реЛ рд░рд╣рд╛ рд╣реВрдБред

рдЗрд╕реЗ рд╡рд╛рдкрд╕ рдПрдирдо рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рд▓рд╛рдирд╛, рдЬреЛ рдХрд┐ рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдореИрдВ рдЗрд╕ рддрд░реНрдХ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдордЭрддрд╛ рд╣реВрдВ рдХрд┐ рдЧреЛ рдХреЛ рдЬреЗрдирд░рд┐рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕ рддрд░реНрдХ рдкрд░ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЕрд╕реНрдерд┐рд░ рд╣реВрдВ рдХрд┐ рдЧреЛ рдХреЛ рдПрдирдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВрдиреЗ рдЗрд╕реЗ рдКрдкрд░ https://github.com/golang/go/issues/19814#issuecomment -290878151 рдореЗрдВ рдкреВрдЫрд╛ рдерд╛ рдФрд░ рдореИрдВ рдЕрднреА рднреА рдЗрд╕ рдкрд░ рдЕрд╕реНрдерд┐рд░ рд╣реВрдВред рдЕрдЧрд░ рдЗрд╕рдХрд╛ рдХреЛрдИ рдЕрдЪреНрдЫрд╛ рдЬрд╡рд╛рдм рдерд╛, рддреЛ рдореИрдВ рдЪреВрдХ рдЧрдпрд╛ред рдХреНрдпрд╛ рдХреЛрдИ рдЗрд╕реЗ рджреЛрд╣рд░рд╛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдЗрд╕реЗ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ? рдзрдиреНрдпрд╡рд╛рджред

@ianlancetaylor рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдЬрдЯрд┐рд▓ рд╣реИ, рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдорд╛рди рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдорд╛рдиреЛрдВ рдХреЗ рд╕реЗрдЯ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ, рдЬреЛ рдЖрдЬ рдЧреЛ рдореЗрдВ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред рдЖрд░рдкреАрд╕реА рдФрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рд╕рд╣рд┐рдд, рдЕрдкрдиреЗ рдХреЛрдб рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рдкрд░ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рд╣реИ, рдЬреЛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИред рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рд╡рд╛рдХреНрдпрд╛рддреНрдордХ рдмрд╛рд░реАрдХрд┐рдпрд╛рдВ рдХрдИ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рддреА рд╣реИрдВред рдЖрдк рдкрд╛рддреЗ рд╣реИрдВ рдХрд┐ рдореВрд▓реНрдпрд╡рд╛рди рд╡реНрдпрдХреНрддрд┐рдкрд░рдХ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдКрдкрд░ рджрд┐рдП рдЧрдП рддрд░реНрдХреЛрдВ рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рд╢рдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдЗрд╕реЗ рднрд╛рд╖рд╛ рд╕реНрддрд░ рдкрд░ рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред

@ianlancetaylor : рд╕рдм рдХреБрдЫ рдЯрд╛рдЗрдк рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рдХрд░рдирд╛ рд╣реИред рдЖрдк рдЯрд╛рдЗрдкреЛ рдпрд╛ рдЕрд╕рдВрдЧрдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдХрд╛рд░рдг рд░рдирдЯрд╛рдЗрдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдЬреЛрдЦрд┐рдо рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд▓рд╣рд╛рд▓ рдЖрдк go . рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ

if enumReference == 1

рдХреНрдпреЛрдВрдХрд┐ рдлрд┐рд▓рд╣рд╛рд▓ рдПрдирдо рд╕рд┐рд░реНрдл рдирдВрдмрд░ рдпрд╛ рдЕрдиреНрдп рдЖрджрд┐рдо рдбреЗрдЯрд╛рдЯрд╛рдЗрдк рд╣реИрдВред

рд╡рд╣ рдХреЛрдб рдмрд┐рд▓реНрдХреБрд▓ рднреА рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрд╛рд╡рд╛ рд╕рдореБрджрд╛рдп рдореЗрдВ рд╕рд╛рд▓реЛрдВ рдкрд╣рд▓реЗ рдЖрдкрдиреЗ рд╡рд╣реА рдЪрд░реНрдЪрд╛ рдХреА рдереА, рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдПрдирдо рдкреЗрд╢ рдХрд┐рдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдорд╣рддреНрд╡ рдХреЛ рд╕рдордЭрддреЗ рд╣реИрдВред

рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

if enumReference == enumType

рдЖрдкрдХреЛ рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХрд▓реНрдкрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ if enumReference == 1 рдЕрдзрд┐рдХ рдЫрд┐рдкреЗ рд╣реБрдП рддрд░реАрдХреЗ рд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рдорд╕реНрдпрд╛рдПрдВ рдкреИрджрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЖрдк рдХреЗрд╡рд▓ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗред

рдореИрдВ рдХреЗрд╡рд▓ рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ: рдЧреЛ рдХреА рдЕрдкрдиреА рдХреНрд╖рдорддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ рдЬрд┐рди рдЪреАрдЬреЛрдВ рдФрд░ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдХреЛ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рд╕рд┐рджреНрдз рдФрд░ рд╕рдордЭрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрди рдкрд░ рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдЬреИрд╕реЗ рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдирдИ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдпрд╛ рдкреНрд░рддрд┐рдорд╛рдиреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЯрд╛рдЗрдк рд╕реБрд░рдХреНрд╖рд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реАрдХрд╛ рд╣реИ рддреЛ рд╢рд╛рдпрдж рдПрдирдо рд╕реЗ рдмреЗрд╣рддрд░ рдХреБрдЫ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдпрд╣ рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИред

рдЧреЛ рдХреА рдЕрдкрдиреА рдХреНрд╖рдорддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЬреАрдм рд╣реИ рдХрд┐ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рд╕рд┐рджреНрдз рдФрд░ рд╕рдордЭреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЪреАрдЬреЛрдВ рдФрд░ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдкрд░ рдпрд╣рд╛рдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рддреА рд╣реИ рдЬреИрд╕реЗ рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреА рдирдИ рдЕрд╡рдзрд╛рд░рдгрд╛рдУрдВ рдпрд╛ рдкреНрд░рддрд┐рдорд╛рдиреЛрдВ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рддреЗ рд╣реИрдВред

рдЕрдлреИрд╕, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЬреЗрдирд░рд┐рдХ, рдпреЛрдЧ рдкреНрд░рдХрд╛рд░ рдЖрджрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдиреНрдп рдЪрд░реНрдЪрд╛рдУрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реБрдП ... Javas рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдЕрддреНрдпрдВрдд рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИред рдпрд╣ рдПрдХ рдмрд╣реБрдд рдмрдбрд╝рд╛ рдлрд░реНрдХ рд╣реИред

рдЧреЛ рдореЗрдВ рд▓реЛрдЧ рднрд╛рд╖рд╛ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рд╕рдВрдХрд▓рдХ рдЬрдЯрд┐рд▓рддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЙрди рд╢реБрд░реБрдЖрддреА рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред

рдЬрдмрдХрд┐ рдореБрдЭреЗ рднреА рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдкреНрд░рд╛рдердорд┐рдХрддрд╛рдПрдВ рдЕрдкрдиреЗ рд╡рд░реНрддрдорд╛рди рд╕реНрд╡рд░реВрдк рдФрд░ рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рдмреЗрдорд╛рдиреА рд╣реИрдВ, рдЖрдкрдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╢реЙрдЯ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╕рдВрднрд╡ рдФрд░ рдХрдо рд╕реЗ рдХрдо рд╡рд┐рдШрдЯрдирдХрд╛рд░реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдЖрдирд╛ рд╣реИред рдХреБрдЫ рдФрд░ рдЖрдкрдХреЛ рдЖрдЧреЗ рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛, рдЗрдореЛред

@derekperkins @rudolfschmidt рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╕реА ++ рдореЗрдВ рдПрдирдо рдкреНрд░рдХрд╛рд░ рд╣реИрдВ, рдЖрдк рдЬрд┐рди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣реЗ рд╣реИрдВ рд╡реЗ рд╕реА ++ рдореЗрдВ рдирд╣реАрдВ рд╣реИрдВред рддреЛ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдпрджрд┐ рдПрдХ рдПрдирдо рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдЪрд░ рдХреЗрд╡рд▓ рдЙрд╕ рдПрдирдо рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмреЗрдХрд╛рд░ рд╣реЛрдЧрд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рдордирдорд╛рдирд╛ рдкреВрд░реНрдгрд╛рдВрдХ рд╕реЗ рдПрдирдо рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП; рдЕрдиреНрдпрдерд╛ рдЖрдк рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди рдкрд░ рдПрдирдо рдирд╣реАрдВ рднреЗрдЬ рд╕рдХрддреЗред рдареАрдХ рд╣реИ, рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдПрдирдо рд╡реИрд▓реНрдпреВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЗрд╕ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрд╡рд┐рдЪ рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдердХрд╛рдК рд▓рдЧрддрд╛ рд╣реИред рддреЛ рд░реВрдкрд╛рдВрддрд░рдг рдХрд░рддреЗ рд╕рдордп, рдХреНрдпрд╛ рд╕рдВрдХрд▓рдХ рдПрдХ рдЪреЗрдХ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдорд╛рди рдкреНрд░рдХрд╛рд░ рд░реВрдкрд╛рдВрддрд░рдг рдХреЗ рджреМрд░рд╛рди рдПрдХ рд╡реИрдз рдПрдирдо рдорд╛рди рд╣реИ? рдФрд░ рдЕрдЧрд░ рдореВрд▓реНрдп рдЕрдорд╛рдиреНрдп рд╣реИ рддреЛ рдХреНрдпрд╛ рдпрд╣ рдШрдмрд░рд╛рддрд╛ рд╣реИ?

рдХреНрдпрд╛ рдПрдирдо рдорд╛рди рдЕрдиреБрдХреНрд░рдорд┐рдХ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИрдВ, рдпрд╛ рдХреНрдпрд╛ рд╡реЗ рд╕реА ++ рдореЗрдВ рдХрд┐рд╕реА рднреА рдореВрд▓реНрдп рдкрд░ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ?

рдЧреЛ рдореЗрдВ, рд╕реНрдерд┐рд░рд╛рдВрдХ рдЯрд╛рдЗрдк рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд╣рдо рдкреВрд░реНрдгрд╛рдВрдХ рд╕реЗ рдПрдХ рдПрдирдо рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ рддреЛ if enumVal == 1 рдХреЛ рдордирд╛ рдХрд░рдирд╛ рдЕрдЬреАрдм рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдХрд░ рд╕рдХрддреЗ рдереЗред

рдЧреЛ рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдбрд┐рдЬрд╛рдЗрди рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдЧреЛ рд▓рд┐рдЦрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВред рдореБрдЭреЗ рдЕрднреА рддрдХ рдПрдирдо рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рд▓рд╛рдн рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ рдЬреЛ рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╕рдордп рд╣рдорд╛рд░реА рдорджрдж рдХрд░рддрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдмрд╛рдзрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЧреЛ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдмреЗрд╣рддрд░ рдпрд╛ рдмрджрддрд░ рдХреЗ рд▓рд┐рдП, рдЧреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрдВрддреНрд░ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореЗрд░рд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рд▓рд┐рдП рдЧреЛ рдореЗрдВ рдПрдирдо рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рддрд░реНрдХ рдЕрднреА рддрдХ рд╕рдореНрдореЛрд╣рдХ рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред

рдореИрдВ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рджреЛрд╣рд░рд╛рдКрдВрдЧрд╛ рд▓реЗрдХрд┐рди рдореИрдВ рдПрдирдореЛрдВ рдХреЛ рд░рдЦрдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЖрдЬ рд╣реИрдВ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рд╢реАрд░реНрд╖ рдкрд░ рд╕реБрд╡рд┐рдзрд╛рдПрдВ рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ:

  • рдПрдирдо рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдорд╛рди рдкреНрд░рдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝реЗ рдХреБрдЫ рдирд╛рдорд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реЛрддреЗ рд╣реИрдВ
  • рдЬрдм рддрдХ рдЙрдирдХреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░ рд╕рдВрдЧрдд рд╣реЛрддреЗ рд╣реИрдВ, рдХрдВрдкрд╛рдЗрд▓рд░ рдХреЛ рдордирдорд╛рдиреЗ рдореВрд▓реНрдп рд╕реЗ рдПрдирдо рдореВрд▓реНрдп рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреА рдЪрд╛рд╣рд┐рдПред int рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХреЛрдИ рднреА рдорд╛рди рдХрд┐рд╕реА рднреА рдкреВрд░реНрдгрд╛рдВрдХ рдПрдирдо рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
  • рдЕрдорд╛рдиреНрдп рдПрдирдо рдорд╛рди рдХреА рдУрд░ рд▓реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд░реВрдкрд╛рдВрддрд░рдг рдХреА рдЕрдиреБрдорддрд┐ рд╣реИред рдПрдирдо рдкреНрд░рдХрд╛рд░ рдХреЛ рдХреЛрдИ рдмрд╛рдзрд╛ рдирд╣реАрдВ рдбрд╛рд▓рдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рдПрдХ рдЪрд░ рдХреНрдпрд╛ рдорд╛рди рд▓реЗ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рд╢реАрд░реНрд╖ рдкрд░ рдпрд╣ рдЬреЛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рд╡рд╣ рд╣реИ:

  • рдПрдирдо рдореВрд▓реНрдпреЛрдВ рдХреА рдХрдбрд╝реАред рдореЗрд░реЗ рдЕрдиреБрднрд╡ рд╕реЗ, UI рдФрд░ рд▓реЙрдЧрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реИред рдпрджрд┐ рдПрдирдо рдорд╛рди рдорд╛рдиреНрдп рд╣реИ, рддреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧреАрдХрд░рдг рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдирд╛рдо рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдЕрдорд╛рдиреНрдп рд╣реИ, рддреЛ рдпрд╣ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдорд╛рди рдХрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ -1 рдХреБрдЫ рдПрдирдо рдкреНрд░рдХрд╛рд░ рдХрд╛ рдорд╛рдиреНрдп рдПрдирдо рдорд╛рди рдирд╣реАрдВ рд╣реИ Foo , рддреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧреАрдХрд░рдг рдХреЛ рдХреЗрд╡рд▓ -1 рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
  • рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ, рдХреНрдпрд╛ рдорд╛рди рд░рдирдЯрд╛рдЗрдо рдкрд░ рдорд╛рдиреНрдп рдПрдирдо рдорд╛рди рд╣реИред рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреАред рдЬреИрд╕реЗ-рдЬреИрд╕реЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдирдП рдПрдирдо рдорд╛рди рдкреЗрд╢ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИред рдпрд╛ рдпрд╣ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЧрд▓рддреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдЕрднреА рдЖрдкрдХреЛ рдпрд╛ рддреЛ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдПрдирдо рдорд╛рди рд╕рдЦреНрддреА рд╕реЗ рдЕрдиреБрдХреНрд░рдорд┐рдХ рд╣реИрдВ (рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рдЬрд┐рд╕реЗ рдЖрдк рд╣рдореЗрд╢рд╛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдпрд╛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рд╣рд░ рд╕рдВрднрд╡ рдореВрд▓реНрдп рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВред рдЙрд╕ рддрд░рд╣ рдХрд╛ рдХреЛрдб рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдмрд╣реБрдд рдмрдбрд╝рд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЧрд▓рддрд┐рдпрд╛рдБ рд╣реЛрдирд╛ рддрдп рд╣реИред
  • рд╕рдВрднрд╡рддрдГ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдПрдХ рдПрдирдо рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд▓реЛрдЧ рдпрд╣рд╛рдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреВрдЫрддреЗ рд╣реИрдВ, рджреВрд╕рд░реА рднрд╛рд╖рд╛ рдореЗрдВ рднреА рдпрд╣ рд╣реИ рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрднреА рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИред

рдореЗрд░рд╛ рдФрдЪрд┐рддреНрдп рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдФрд░ рдмрдЧ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред рдбреЗрд╡рд▓рдкрд░ рдХреЗ рд╣рд╛рде рд╕реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпреЗ рд╕рднреА рдХрд╛рд░реНрдп рдердХрд╛рдК рдФрд░ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реИрдВ рдпрд╛ рдмрд╛рд╣рд░реА рдЯреВрд▓рд┐рдВрдЧ рдЬрдЯрд┐рд▓ рдХреЛрдб рдФрд░ рдмрд┐рд▓реНрдбрд┐рдВрдЧ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рднреА рдкреЗрд╢ рдХрд░рддреЗ рд╣реИрдВред рдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЗрдВ рдЙрди рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рдирдХреА рдореБрдЭреЗ рдЬрд░реВрд░рдд рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдЬрдЯрд┐рд▓ рдФрд░ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд┐рдП рдмрд┐рдирд╛ рдПрдирдо рд╕реЗ рдЪрд╛рд╣рд┐рдПред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЧреЛ рдХреЛ рд╕реНрд╡рд┐рдлреНрдЯ рдпрд╛ рдЬрд╛рд╡рд╛ рдореЗрдВ рднреА рдПрдирдо рдЬреИрд╕реА рдХрд┐рд╕реА рдЪреАрдЬ рдХреА рдЬрд░реВрд░рдд рд╣реИред


рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд░реНрдЪрд╛ рд╣реБрдИ рдХрд┐ рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╣рд░ рд╕рдВрднрд╡ рдПрдирдо рд╡реИрд▓реНрдпреВ рдХреЛ рдХрд╡рд░ рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рд╕реЗ рдпрд╣ рдмреЗрдХрд╛рд░ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдердХрд╛рд╡рдЯ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдиреЗ рд╕реЗ рдЕрдорд╛рдиреНрдп рдПрдирдо рдорд╛рди рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрднреА рднреА рдЙрдиреНрд╣реЗрдВ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рдорд▓рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрд░рдорд┐рдХ рдХреЛрдб рдорд░рдореНрдордд рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬреЛ рд╣рдо рдпрд╣рд╛рдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдпрджрд┐ рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗрд╕ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдмрд┐рдирд╛ рднрд╛рд╖рд╛ рдмрджрд▓реЗ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@ianlancetaylor рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рддрд░реНрдХ рдореЗрдВ рдХреБрдЫ рдЦрд╛рдорд┐рдпрд╛рдВ рд╣реИрдВред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░ рдпрджрд┐ рдПрдХ рдПрдирдо рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдЪрд░ рдХреЗрд╡рд▓ рдЙрд╕ рдПрдирдо рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдмреЗрдХрд╛рд░ рд╣реЛрдЧрд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдПрдХ рдордирдорд╛рдирд╛ рдкреВрд░реНрдгрд╛рдВрдХ рд╕реЗ рдПрдирдо рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд░реВрдкрд╛рдВрддрд░рдг рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП; рдЕрдиреНрдпрдерд╛ рдЖрдк рдиреЗрдЯрд╡рд░реНрдХ рдХрдиреЗрдХреНрд╢рди рдкрд░ рдПрдирдо рдирд╣реАрдВ рднреЗрдЬ рд╕рдХрддреЗред

рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рд▓рд┐рдП рдПрдмреНрд╕реНрдЯреНрд░реИрдХреНрд╢рди рдареАрдХ рд╣реИ; Go рдХрдИ рд╕рд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рдХреЛрдб рд╕рдВрдХрд▓рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:

package main

import "fmt"

const NULL = 0x0

func main() {
    str := "hello"
    if &str == NULL {
        fmt.Println("str is null")
    }
}

рд▓реЗрдХрд┐рди C рдореЗрдВ, рдЗрд╕ рд╢реИрд▓реА рдХрд╛ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рдВрдХрд▓рд┐рдд рд╣реЛрдЧрд╛ред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ Go рджреГрдврд╝рддрд╛ рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ C рдирд╣реАрдВ рд╣реИред

Enums рдХреЗ рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХреЛ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪрд░ рдХреЗ рдкрддреЗ рдХреЗ рд╕рдорд╛рди, рдПрдХ рдЕрдореВрд░реНрдд рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдП рдЫрд┐рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

@zerkms рд╣рд╛рдБ, рдпрд╣ рдПрдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди d рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдиреБрдорд╛рди рд╕рдВрднрд╡ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП; рд╣рд╛рд▓рд╛рдБрдХрд┐, рдПрдирдо рдХрд╛ рдпреЛрдЧреНрдп рдЙрдкрдпреЛрдЧ (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣реИ) рдкрдврд╝рдиреЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЖрд╕рд╛рди рд╣реИред

@ianlancetaylor рдЬреЛ рдХрд┐ рдЖрдк рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реА рд╕рдВрд╕реНрдХрд░рдг рд╣реИред рдореБрдЭреЗ рдпрдХреАрди рд╣реИ рдХрд┐ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧ рд╣реИрдВ рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдкрд╕рдВрдж рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЖрдИрдПрдордУ:

Enum рдорд╛рдиреЛрдВ рдореЗрдВ рдХреЛрдИ рд╕рдВрдЦреНрдпрд╛рддреНрдордХ рдЧреБрдг рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдкреНрд░рддреНрдпреЗрдХ рдПрдирдо рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рди рдЕрд╕рддрдд рд▓реЗрдмрд▓реЛрдВ рдХреЗ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкрд░рд┐рдорд┐рдд рдмреНрд░рд╣реНрдорд╛рдВрдб рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдП, рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП, рдХрд┐рд╕реА рднреА рд╕рдВрдЦреНрдпрд╛ рдпрд╛ рдЕрдиреНрдп рдПрдирдо рдкреНрд░рдХрд╛рд░реЛрдВ рд╕реЗ рдЕрд╕рдВрдмрдВрдзрд┐рддред рдЗрд╕ рддрд░рд╣ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХреЗ рд╕рд╛рде рдЖрдк рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ == рдпрд╛ != ред рдЕрдиреНрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╡рд┐рдзрд┐рдпреЛрдВ рдпрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЙрди рдорд╛рдиреЛрдВ рдХреЛ рдкреВрд░реНрдгрд╛рдВрдХ рддрдХ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрд╕реБрд░рдХреНрд╖рд┐рдд рдпрд╛ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рд╕реАрдзреЗ рдЙрдЬрд╛рдЧрд░ рдХрд░рдиреЗ рдХреЗ рдХрд┐рд╕реА рднреА рд╡реИрдз рдХрд╛рд░рдг рдХреЗ рд╕рд╛рде рдпрд╣ рдореМрд▓рд┐рдХ рдмрд╛рдд рдирд╣реАрдВ рд╣реИред рдЗрд╕реА рдХрд╛рд░рдг рд╕реЗ рдЖрдк bool(0) рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП false рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдПрдирдо рдХреЛ рдХрд┐рд╕реА рд╕рдВрдЦреНрдпрд╛ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рд╕рднреА рдорд╛рдорд▓реЛрдВ рдХреЛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рд╕реНрдерд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рддреНрд░реБрдЯрд┐ рдкреНрд░рдмрдВрдзрди рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рдердХрд╛рдК рд╣реИ, рддреЛ рдЖрдк рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рдорд╛рдорд▓реЛрдВ рдХреЛ рднрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░рд┐рдВрдЧрд░ рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдЬреИрд╕реЗ рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

рдпрджрд┐ рдЖрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдмрд╛рд╣рд░ рдореВрд▓реНрдп рднреЗрдЬ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдПрдХ int рдЕрдЪреНрдЫрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдПрдХ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдорд╛рдирдХ рдХрд╛ рдкрд╛рд▓рди рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдпрд╛ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рд╕реЗ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╕реНрд░реЛрдд рд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдпрд╛ рдЖрдкрдХреЛ рдЪреАрдЬреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рд╕рдмрд╕реЗ рдЫреЛрдЯреА рдЬрдЧрд╣ рдореЗрдВ рдлрд┐рдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЗрд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЖрдо рддреМрд░ рдкрд░ рдЗрдирдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рдкрдХрдбрд╝ рдирд╣реАрдВ рд╣реИ рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рд╕реНрддреБрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдорд╛рди рдкреНрд░рдХрд╛рд░ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд╕реНрд░реЛрдд рдХреНрд░рдо рд╕реЗ рдЕрдкреНрд░рднрд╛рд╡рд┐рдд рд╣реИред рдЖрдк рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдХрд┐ рдкреНрд░реЛрд╕реЗрд╕ рдП рдХрд╛ рдЧреНрд░реАрди рдкреНрд░реЛрд╕реЗрд╕ рдмреА рдХрд╛ рдмреНрд▓реВ рд╣реЛ рдЬрд╛рдП рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рдФрд░ рдиреЗ рддрдп рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рд╡рд░реНрдгрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд▓реВ рдХреЛ рдЧреНрд░реАрди рд╕реЗ рдкрд╣рд▓реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП: рдЖрдк unrecognized color "Blue" рдЪрд╛рд╣рддреЗ рд╣реИрдВред

рдпрд╣ рдХрдИ рд░рд╛рдЬреНрдпреЛрдВ рдХрд╛ рд╕рд╛рд░ рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛, рд╕реБрд░рдХреНрд╖рд┐рдд рддрд░реАрдХрд╛ рд╣реИред рдпрд╣ рдЙрди рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдЕрд░реНрде рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдпрдХреНрд░рдо рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред

(рдмреЗрд╢рдХ, рдЕрдХреНрд╕рд░ рдЖрдк рдбреЗрдЯрд╛ рдХреЛ рдЙрди рд░рд╛рдЬреНрдпреЛрдВ рд╕реЗ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕ рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рд╛рдЬреНрдпреЛрдВ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛрддрд╛ рд╣реИ...)

@ljeabmreosn рдореЗрд░реА рдмрд╛рдд рдпрд╣ рдереА рдХрд┐ рдпрджрд┐ рдЧреЛ рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ рд╕реЗ рдПрдирдо рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рддреЛ рдПрдХ рдЕрдирдкреЗрдХреНрд╖рд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдПрдирдо рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛрдирд╛ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реЛрдЧрд╛ред рдЖрдкрдХрд╛ рдкреНрд░рддрд┐-рдЙрджрд╛рд╣рд░рдг рдЕрд▓рдЧ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЧреЛ рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ рд╕реЗ рд╕реВрдЪрдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред

@jimmyfrasche рдпрджрд┐ рдЖрдкрдХреЛ рдкреВрд░реНрдгрд╛рдВрдХ рдФрд░ рдПрдирдо рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмреАрдЪ рдХрдирд╡рд░реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрд╡рд┐рдЪ рд▓рд┐рдЦрдирд╛ рд╣реИ, рддреЛ рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЧреЛ рдореЗрдВ рд╕рдлрд╛рдИ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рднрд╛рд╖рд╛ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧреА рдирд╣реАрдВ рд▓рдЧрддрд╛ рд╣реИред рдпрд╣ рдпреЛрдЧ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рдмрди рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП #19412 рджреЗрдЦреЗрдВред

рдпрд╣рд╛рдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИрдВред

рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЯрд┐рдкреНрдкрдгреА: рдХрд┐рд╕реА рднреА рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд▓рд┐рдП рдЬреЛ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдореВрд▓реНрдп (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ int) рдХреЛ рдЙрдЬрд╛рдЧрд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдПрдХ рдПрдирдо рдХреЗ рд▓рд┐рдП рдФрд░ рд╕реЗ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣рд╛рдВ рдХреБрдЫ рд╕рд╡рд╛рд▓реЛрдВ рдХреЗ рдЬрд╡рд╛рдм рджрд┐рдП рдЧрдП рд╣реИрдВред

рдПрдХ рдПрдирдо рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╢реВрдиреНрдп рдорд╛рди рдХреНрдпрд╛ рд╣реИ?

рдЖрдк рдПрдХ рдПрдирдо рд╕реЗ рджреВрд╕рд░реЗ рдПрдирдо рдореЗрдВ рдХреИрд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВ? рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рд╕рдкреНрддрд╛рд╣ рдХреЗ рджрд┐рди рдПрдХ рдПрдирдо рдХрд╛ рдПрдХ рд╡рд┐рд╣рд┐рдд рдЙрджрд╛рд╣рд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рдмреБрдзрд╡рд╛рд░ рд╕реЗ рдЧреБрд░реБрд╡рд╛рд░ рддрдХ "рд╡реГрджреНрдзрд┐" рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдирд╣реАрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ред

(рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, "рд╕реНрдЯреНрд░рд┐рдВрдЧрд┐рдлрд┐рдХреЗрд╢рди" рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рд╕рдкреНрддрд╛рд╣ рдХреЗ рдПрдХ рджрд┐рди рдХреЗ рд▓рд┐рдП рд╕рд╣реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рднрд╛рд╖рд╛- рдФрд░ рд▓реЛрдХреЗрд▓-рдирд┐рд░реНрднрд░ рд╣реИред)

@ рдЬреЛрд╢реЗрд░рд┐рдпрди рд╕реНрдЯреНрд░рд┐рдВрдЧрд┐рдлрд┐рдХреЗрд╢рди рдХрд╛ рдЕрд░реНрде рдЖрдорддреМрд░ рдкрд░ рдПрдирдо рдорд╛рдиреЛрдВ рдХреЗ рдирд╛рдореЛрдВ рдХреЛ рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╣реИред рдХреЛрдИ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдпрд╛ рдХреБрдЫ рднреА рдирд╣реАрдВред рдпрджрд┐ рдЖрдк рдЙрд╕рдХреЗ рдКрдкрд░ рдХреБрдЫ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг, рддреЛ рдЖрдк рдЗрд╕реЗ рдЕрдиреНрдп рдорд╛рдзреНрдпрдореЛрдВ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдиреНрдп рднрд╛рд╖рд╛рдПрдБ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдореГрджреНрдз рднрд╛рд╖рд╛ рдФрд░ рд░реВрдкрд░реЗрдЦрд╛ рдЙрдкрдХрд░рдг рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ C# рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ ToString рдУрд╡рд░рд░рд╛рдЗрдб рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рд╕рдВрд╕реНрдХреГрддрд┐ рдХреА рдЬрд╛рдирдХрд╛рд░реА рднреА рд▓реЗрддрд╛ рд╣реИред рдпрд╛ рдЖрдк рд╕реНрд╡рдпрдВ DateTime рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреА ToString рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкреНрд░рд╛рд░реВрдк рдФрд░ рд╕рдВрд╕реНрдХреГрддрд┐ рдЬрд╛рдирдХрд╛рд░реА рджреЛрдиреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпреЗ рдУрд╡рд░рд░рд╛рдЗрдб рдорд╛рдирдХ рдирд╣реАрдВ рд╣реИрдВ, object рд╡рд░реНрдЧ рдЬреЛ рд╕рднреА рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рд╛ рд╣реИ, рдЙрд╕рдХреЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ ToString() рд╣реИред рдЧреЛ рдореЗрдВ рдХрд╛рдлреА рд╣рдж рддрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рддрд░рд╣ред

рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдерд╛рдиреАрдпрдХрд░рдг рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдмрд╛рд╣рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рдПрдирдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдХрд░реЗрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд╕реНрдЯрдо рд╕реНрдЯреНрд░рд┐рдВрдЧрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреА рддрд░рд╣ред

@josarian рдЪреВрдВрдХрд┐, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди-рд╡рд╛рд░, рдпрд╣ рдЕрднреА рднреА рдПрдХ int рд╣реЛрдЧрд╛ рдФрд░ рд╢реВрдиреНрдп рдорд╛рди рд╕рднреА рдмрд┐рдЯреНрд╕ рд╢реВрдиреНрдп рд╣реИрдВ, рд╢реВрдиреНрдп рдорд╛рди рд╕реНрд░реЛрдд рдХреНрд░рдо рдореЗрдВ рдкрд╣рд▓рд╛ рдорд╛рди рд╣реЛрдЧрд╛ред рдпрд╣ рдЗрдВрдЯ-рдЗрдиреЗрд╕ рдХреЛ рд▓реАрдХ рдХрд░рдиреЗ рдЬреИрд╕рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд╛рдлреА рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рд╢реВрдиреНрдп рдорд╛рди рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рддрдп рдХрд░рддреЗ рд╣реБрдП рдХрд┐ рдПрдХ рд╕рдкреНрддрд╛рд╣ рд╕реЛрдорд╡рд╛рд░ рдпрд╛ рд░рд╡рд┐рд╡рд╛рд░ рдХреЛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред рдмреЗрд╢рдХ, рдпрд╣ рдХрдо рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рд╢реЗрд╖ рд╢рд░реНрддреЛрдВ рдХреЗ рдХреНрд░рдо рдХрд╛ рдРрд╕рд╛ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рддрддреНрд╡ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ рддреЛ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдкреБрди: рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЧреИрд░-рддреБрдЪреНрдЫ рдкреНрд░рднрд╛рд╡ рдкрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЙрдиреНрд╕реНрдЯ/рдЖрдИрдУрдЯрд╛ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред

@creker рдиреЗ рдЬреЛ рдХрд╣рд╛, рдЙрд╕реЗ рдлрд┐рд░ рд╕реЗ рд╕рдЦреНрдд рдХрд░реЗрдВред рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдЙрдореНрдореАрдж рдХрд░реВрдВрдЧрд╛

var e enum {
  Sunday
  Monday
  //etc.
}
fmt.Println(reflect.ValueOf(e))

рд░рд╡рд┐рд╡рд╛рд░ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП 0 рдирд╣реАрдВред рд▓реЗрдмрд▓ рдорд╛рди рд╣реИ, рдЗрд╕рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдирд╣реАрдВред

рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕рдореЗрдВ рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд┐рдзрд┐ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП-рдмрд╕ рд▓реЗрдмрд▓ рдХреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдкреНрд░рддрд┐рдмрд┐рдВрдм рджреНрд╡рд╛рд░рд╛ рдкрд╣реБрдВрдЪрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред (рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ Println рдПрдХ рдкрд░рд╛рд╡рд░реНрддрди рдкрд░ рд▓реЗрдмрд▓ () рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдПрдирдо рд╕реЗ рдореВрд▓реНрдп рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ? рдЧрд╣рд░рд╛рдИ рд╕реЗ рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ fmt рдЗрд╕рдХрд╛ рдЬрд╛рджреВ рдХреИрд╕реЗ рдХрд░рддрд╛ рд╣реИред)

рдЖрдк рдПрдХ рдПрдирдо рд╕реЗ рджреВрд╕рд░реЗ рдПрдирдо рдореЗрдВ рдХреИрд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВ? рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдХрдИ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рд╕рдкреНрддрд╛рд╣ рдХреЗ рджрд┐рди рдПрдХ рдПрдирдо рдХрд╛ рдПрдХ рд╡рд┐рд╣рд┐рдд рдЙрджрд╛рд╣рд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдИ рдмреБрдзрд╡рд╛рд░ рд╕реЗ рдЧреБрд░реБрд╡рд╛рд░ рддрдХ "рд╡реГрджреНрдзрд┐" рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝рд╛ рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдирд╣реАрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддрд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдпрд╛ рдПрдХ рдмрдбрд╝рд╛ рд╕реНрд╡рд┐рдЪ рд╕рд╣реА рдмрд╛рдд рд╣реИред рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдпрд╛ рдлрд╝реИрдХреНрдЯрд░реА рдлрд╝рдирдХреНрд╕ рдкрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдкреИрдЯрд░реНрди рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЧреЛ рдЬрдирд░реЗрдЯ рд╕реЗ рднрд░рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ (рдФрд░ рд╢рд╛рдпрдж рд╕рдВрдХрд▓рдХ рджреНрд╡рд╛рд░рд╛ рдЗрд╕реЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдкрд░ рдЕрдВрдХрдЧрдгрд┐рдд рдореЗрдВ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ)ред

рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдорд╛рдирдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рднреА рдПрдирдореЛрдВ рдХрд╛ рдХреБрд▓ рдХреНрд░рдо рд╣реИ рдпрд╛ рд╡реЗ рдЪрдХреНрд░реАрдп рд╣реИрдВред type failure enum { none; input; file; network } рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдЕрдорд╛рдиреНрдп рдЗрдирдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рд╡рд┐рдлрд▓рддрд╛ рд╕реЗ рдХрдо рд╣реИ рдпрд╛ рдлрд╝рд╛рдЗрд▓ рд╡рд┐рдлрд▓рддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╕реЗ рдиреЗрдЯрд╡рд░реНрдХ рд╡рд┐рдлрд▓рддрд╛ рд╣реЛрддреА рд╣реИ рдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рд╡рд┐рдлрд▓рддрд╛ рдореЗрдВ рд╡реГрджреНрдзрд┐ рд╕реЗ рд╕рдлрд▓рддрд╛ рдорд┐рд▓рддреА рд╣реИ?

рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рдкреНрд░рд╛рдердорд┐рдХ рдЙрдкрдпреЛрдЧ рдЪрдХреНрд░реАрдп рдЖрджреЗрд╢рд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЗрд╕реЗ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ рдкреИрд░рд╛рдорд╛рдЯреЗрд░рд╛рдЗрдЬреНрдб рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдПрдХ рдирдпрд╛ рд╡рд░реНрдЧ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдЦрд░рд╛рдм рд╕рд┐рдВрдЯреИрдХреНрд╕ рд╣реИ, рд▓реЗрдХрд┐рди, рдЪрд░реНрдЪрд╛ рдХреЗ рд▓рд┐рдП, рдорд╛рди рд▓реЗрдВ рдХрд┐ рдпрд╣ I%N рд╣реИ рдЬрд╣рд╛рдВ I рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рд╣реИ рдФрд░ N рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рди рдХреЗ рд╕рд╛рде рд╕рднреА рдЕрдВрдХрдЧрдгрд┐рддреАрдп рд░реВрдк рд╕реЗ рдореЙрдб рдПрди рд╣реИред рддрдм рдЖрдк рдХрд░ рд╕рдХрддреЗ рдереЗ

type Weekday uint%7
const (
  Sunday Weekday = iota
  //etc.

рддреЛ рд╢рдирд┐рд╡рд╛рд░ + 1 == рд░рд╡рд┐рд╡рд╛рд░ рдФрд░ рд╕рдкреНрддрд╛рд╣ рдХрд╛ рджрд┐рди (456) == рд╕реЛрдорд╡рд╛рд░ред рдЕрдорд╛рдиреНрдп рдХрд╛рд░реНрдпрджрд┐рд╡рд╕ рдмрдирд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдХреЙрдиреНрд╕/рдЖрдИрдУрдЯрд╛ рдХреЗ рдмрд╛рд╣рд░ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЬрдм рдЖрдк рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдХрд┐ рдпрд╣ рдирдВрдмрд░-рд╡рд╛рдИ рд╣реЛ, рдЬреИрд╕рд╛ рдХрд┐ @ianlancetaylor рдиреЗ рдмрддрд╛рдпрд╛ рдХрд┐ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬреЛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд╡рд╣ рдпреЛрдЧ рдкреНрд░рдХрд╛рд░ рд╣реИред

рдПрдХ рдордирдорд╛рдирд╛ рдореЙрдбреНрдпреВрд▓рд░ рдЕрдВрдХрдЧрдгрд┐рддреАрдп рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкрд░рд┐рдЪрдп рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╕реБрдЭрд╛рд╡ рд╣реИред рддрдм enums рдЗрд╕ рд░реВрдк рдХрд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдЫреЛрдЯреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд╡рд┐рдзрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ:

var Weekdays = [...]string{"Sunday", ..., "Saturday"}

type Weekday = uint % len(Weekdays)

рдордирдорд╛рдиреЗ рдЖрдХрд╛рд░ рдХреЗ рдЗрдирдЯреНрд╕ рдХреЗ рд╕рд╛рде, рдпрд╣ рдЖрдкрдХреЛ int128, int256, рдЖрджрд┐ рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИред

рдЖрдк рдХреБрдЫ рдмрд┐рд▓реНрдЯ-рдЗрдиреНрд╕ рдХреЛ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

type uint8 = uint%(1<<8)
// etc

рдХрдВрдкрд╛рдЗрд▓рд░ рдкрд╣рд▓реЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реАрдорд╛ рд╕рд╛рдмрд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдПрдкреАрдЖрдИ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рдЕрднрд┐рдХрдерди рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП Len64 рдореЗрдВ math/bits рдлрд╝рдВрдХреНрд╢рди рдЕрдм uint % 64 рд╡рд╛рдкрд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЖрд░рдЖрдИрдПрд╕рд╕реА-рд╡реА рдкреЛрд░реНрдЯ рдкрд░ рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдореБрдЭреЗ uint12 рдкреНрд░рдХрд╛рд░ рдЪрд╛рд╣рд┐рдП рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░реЗ рдирд┐рд░реНрджреЗрд╢ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рдШрдЯрдХ 12 рдмрд┐рдЯ рд╣реИрдВ; рд╡рд╣ uint % (1<<12) рд╣реЛ рд╕рдХрддрд╛ рдерд╛ред рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмрд┐рдЯ-рд╣реЗрд░рдлреЗрд░, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░реЛрдЯреЛрдХреЙрд▓, рдЗрд╕рд╕реЗ рд▓рд╛рднрд╛рдиреНрд╡рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдбрд╛рдЙрдирд╕рд╛рдЗрдбреНрд╕ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИрдВ, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИред рдЧреЛ рдкреНрд░рдХрд╛рд░реЛрдВ рдкрд░ рдХреЛрдб рдХрд╛ рдкрдХреНрд╖ рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рдЯрд╛рдЗрдк-рднрд╛рд░реА рд╣реИред + рдФрд░ - рдЬреИрд╕реЗ рдСрдкрд░реЗрд╢рди рдЕрдЪрд╛рдирдХ % рдЬрд┐рддрдиреЗ рдорд╣рдВрдЧреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рдкреИрд░рд╛рдореАрдЯреНрд░рд┐рдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд┐рдирд╛, рдЖрдкрдХреЛ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рдЗрдВрдЯрд░рдСрдкрд░реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрднрд╡рддрдГ рдХреИрдирдирд┐рдХрд▓ uint8 , uint16 рдЖрджрд┐ рдореЗрдВ рдХрдирд╡рд░реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рд░реВрдкрд╛рдВрддрд░рдг рд╡рд╛рдкрд╕ рд╕реАрдорд╛рдУрдВ рдХреЛ рдЫреБрдкрд╛ рд╕рдХрддрд╛ рд╣реИ рд╡рд┐рдлрд▓рддрд╛рдПрдВ (рдЬрдм рддрдХ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреИрдирд┐рдХ-рдСрди-рдСрдл-рд░реЗрдВрдЬ рд░реВрдкрд╛рдВрддрд░рдг рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдЕрдкрдиреА рдЬрдЯрд┐рд▓рддрд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗрддрд╛ рд╣реИ)ред рдФрд░ рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЗрд╕рдХрд╛ рдЕрддреНрдпрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП HTTP рд╕реНрдерд┐рддрд┐ рдХреЛрдб рдХреЗ рд▓рд┐рдП uint % 1000 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╡рд┐рдЪрд╛рд░ рд╣реИред :)


рдЕрдиреНрдп рдЫреЛрдЯреЗ рдЙрддреНрддрд░:

рдпрд╣ рдПрдХ рддрд░рд╣ рд╕реЗ рдЗрдВрдЯ-рдЗрдиреЗрд╕ рдХреЛ рд▓реАрдХ рдХрд░ рд░рд╣рд╛ рд╣реИ

рдЗрд╕рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрдВрдЯ рд╣реИрдВред :)

рд╕рд╛рдорд╛рдиреНрдп рдкреИрдЯрд░реНрди рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЧреЛ рдЬрдирд░реЗрдЯ рд╕реЗ рднрд░рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ

рдпрджрд┐ рдЖрдкрдХреЛ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдПрдирдо рдХреЗ рд╕рд╛рде рдХреЛрдб рдЬрдирд░реЗрдЯ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рд╕реНрдЯреНрд░рд┐рдВрдЧ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдФрд░ рдмрд╛рдЙрдВрдбреНрд╕ рдЪреЗрдХ рдФрд░ рдЗрд╕реА рддрд░рд╣ рдФрд░ рднрд╛рд╖рд╛ рд╕рдорд░реНрдерди рдХреЗ рд╡рдЬрди рдХреЗ рдмрдЬрд╛рдп рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдирдо рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдорд╛рдирдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕рднреА рдПрдирдореЛрдВ рдХрд╛ рдХреБрд▓ рдХреНрд░рдо рд╣реИ рдпрд╛ рд╡реЗ рдЪрдХреНрд░реАрдп рд╣реИрдВред

рдХрд╛рдлреА рдЙрдЪрд┐рддред рдЗрд╕рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЯреНрдареА рднрд░ рдареЛрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рд╕реНрдкрд╖реНрдЯрддрд╛ рд▓рд╛рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдВрдЧреЗ рдХрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реНрдкрд╖реНрдЯ рд╕реЗрдЯ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдФрд░ рдЕрдиреНрдп рднрд╛рд╖рд╛ рдирд┐рд░реНрдорд╛рдг (рдпрд╛рдиреА рдпрдерд╛рд╕реНрдерд┐рддрд┐) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдиреБрдХрд░рдг рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдирдо рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордЭ рдореЗрдВ рдЖрдПрдВрдЧреЗред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рд╣реИред

@creker рдиреЗ рдЬреЛ рдХрд╣рд╛, рдЙрд╕реЗ рдлрд┐рд░ рд╕реЗ рд╕рдЦреНрдд рдХрд░реЗрдВред

рдХрд╛рдлреА рдЙрдЪрд┐рддред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХрд┐рддрдиреЗ рдорд╛рдорд▓реЗ рд╕рдкреНрддрд╛рд╣ рдХреЗ рджрд┐рдиреЛрдВ рдХреА рддрд░рд╣ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рдордиреЗ рдХреБрдЫ рднреА, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗред рдФрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧреАрдХрд░рдг рдПрдирдо рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдердорд┐рдХ рдЕрдиреБрд░реЛрдзреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред

@ рдЬреЛрд╢реЗрд░рд┐рдпрди рдПрдирдореНрд╕ рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реНрдпрд╛рд╣реА рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рд╢рд╛рдпрдж рдПрдХ рд╕рдорд╛рди рддрдВрддреНрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЕрдиреНрдпрдерд╛, enum { A; B; C}(42) рдХреНрдпрд╛ рд╣реИ?

рдЖрдк рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдХ рдХрдВрдкрд╛рдЗрд▓рд░ рддреНрд░реБрдЯрд┐ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдХреЛрдб рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЖрдк рд░рдирдЯрд╛рдЗрдо рдкрд░ рдЗрдирдЯреНрд╕ рдореЗрдВ рдФрд░ рдЙрд╕рд╕реЗ рдХрдирд╡рд░реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рдпрд╛ рддреЛ рдП рдпрд╛ рд░рдирдЯрд╛рдЗрдо рдкреИрдирд┐рдХ рд╣реИред рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рдЖрдк рд╕реАрдорд┐рдд рдбреЛрдореЗрди рдХреЗ рд╕рд╛рде рдПрдХ рдЕрднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рд░рдирдЯрд╛рдЗрдо рдкреИрдирд┐рдХ рд╣реИ рддреЛ рдЖрдк рдПрдХ рдЕрднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдЬреЛрдбрд╝ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЕрддрд┐рдкреНрд░рд╡рд╛рд╣ рдкрд░ рдШрдмрд░рд╛рд╣рдЯ рдХрд░рддрд╛ рд╣реИ рдЬрдм рдЕрдиреНрдп рдЪрд╛рд░реЛрдВ рдУрд░ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВред рдЕрдЧрд░ рдпрд╣ рдП рд╣реИ, рддреЛ рдЖрдкрдиреЗ рдХреБрдЫ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд╕рд╛рде uint%N рдЬреЛрдбрд╝рд╛ рд╣реИред

рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕реЗ A, B, рдпрд╛ C рдореЗрдВ рд╕реЗ рдХреЛрдИ рднреА рди рд╣реЛрдиреЗ рджреЗрдВ, рд▓реЗрдХрд┐рди рдЖрдЬ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ const/iota рдХреЗ рд╕рд╛рде рдпрд╣реА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рд▓рд╛рдн рдирд╣реАрдВ рд╣реИред

рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд╣реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХрд╛рд░рдг int%N рдЗрд╕реЗ рднрд╛рд╖рд╛ рдореЗрдВ рдирд╣реАрдВ рдмрдирд╛рдПрдВрдЧреЗ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдЙрди рдПрдирдореЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдереЛрдбрд╝реЗ ints рд╣реИрдВред (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдирд╛рд░рд╛рдЬ рдирд╣реАрдВ рд╣реЛрддрд╛ рдЕрдЧрд░ рдЙрдирдХреЗ рдЬреИрд╕рд╛ рдХреБрдЫ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛)ред

рдЕрдВрддрд░реНрдорди рдХреЛ рджреВрд░ рдХрд░рдиреЗ рд╕реЗ рд╡рд╣ рджреБрд╡рд┐рдзрд╛ рджреВрд░ рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЗрд╕реЗ рдЙрди рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдЬрдирд░реЗрд╢рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬрдм рдЖрдк рдЙрд╕ рдЗрдВрдЯ-рдЗрдиреЗрд╕ рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рд╡рд╛рдкрд╕ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдкрдХреЛ рдРрд╕рд╛ рди рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдХрд▓реНрдк рднреА рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдЖрдкрдХреЛ рдпрд╣ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдХрд┐рддрдирд╛ рдЗрдВрдЯ-рдЗрдиреЗрд╕ рдкреЗрд╢ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛: рдЖрдк рдирд╣реАрдВ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ " next" рд╡рд┐рдзрд┐, рдПрдХ рдЪрдХреНрд░реАрдп рдЕрдЧрд▓реА рд╡рд┐рдзрд┐, рдпрд╛ рдПрдХ рдЕрдЧрд▓реА рд╡рд┐рдзрд┐ рдЬреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдХрд┐рдирд╛рд░реЗ рд╕реЗ рдЧрд┐рд░рддреЗ рд╣реИрдВред (рдЖрдк Monday*Sunday - Thursday рдХрд╛рдиреВрдиреА рд╣реЛрдиреЗ рдЬреИрд╕реА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рднреА рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ)ред рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдареЛрд░рддрд╛ рдЗрд╕реЗ рдЕрдзрд┐рдХ рдирд┐рдВрджрдиреАрдп рдирд┐рд░реНрдорд╛рдг рд╕рд╛рдордЧреНрд░реА рдмрдирд╛рддреА рд╣реИред рдПрдХ рднреЗрджрднрд╛рд╡рдкреВрд░реНрдг рд╕рдВрдШ рдЧреИрд░-рдЗрдВрдЯ-рд╡рд╛рдИ рдХрд┐рд╕реНрдо рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдореЙрдбрд▓ рдХрд░рддрд╛ рд╣реИ: pick { A, B, C struct{} } , рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рд╕рд╛рдеред

рдЗрд╕ рддрд░рд╣ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рднрд╛рд╖рд╛ рдореЗрдВ рд░рдЦрдиреЗ рдХрд╛ рдкреНрд░рдореБрдЦ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐

  1. рдЕрд╡реИрдз рдореВрд▓реНрдп рдЕрд╡реИрдз рд╣реИрдВред
  2. рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЬрд╛рдиреЗ/рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ рдЬреЛ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдзрд╛рд░рдгрд╛рдУрдВ рдпрд╛ рдПрдиреЛрдЯреЗрд╢рди (рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИрдВ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмрд┐рдирд╛ рдЙрд╕ рдкрд░ рдХрд╛рд░реНрдп рдХрд░рдиреЗ рдХреА рдЗрдЬрд╛рдЬрдд рджреЗрддрд╛ рд╣реИред

рдЗрд╕ рддрд░рд╣ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рднрд╛рд╖рд╛ рдореЗрдВ рд░рдЦрдиреЗ рдХрд╛ рдкреНрд░рдореБрдЦ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐: рдЕрд╡реИрдз рдореВрд▓реНрдп рдЕрд╡реИрдз рд╣реИрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЬрд╝реЛрд░ рджреЗрдирд╛ рдЬрд╝рд░реВрд░реА рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рдЗрд╕реЗ рд▓рд╛рдн рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ред рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирд╣реАрдВред рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдЕрдХреНрд╕рд░ рдЗрд╕реЗ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИ, рдпрд╣ рдЕрдХреНрд╕рд░ рдЙрдиреНрд╣реЗрдВ рдЙрддреНрдкрд╛рджрди рдХрд░рддреЗ рд╕рдордп рдХрдард┐рди рдмрдирд╛ рджреЗрддрд╛ рд╣реИред рдЬреЛ рдЖрдк рднрд╛рд░реА рд╡рдЬрди рдХрд░рддреЗ рд╣реИрдВ, рдЕрдм рддрдХ, рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╡рд░реАрдпрддрд╛ рддрдХ рд▓рдЧрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрд╣ рд╕рд╡рд╛рд▓ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░ рд╢реБрджреНрдз рд▓рд╛рдн рд╣реИред

рдореБрдЭреЗ рдЕрд╡реИрдз рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреА рдмрд╛рдд рднреА рдирд╣реАрдВ рджрд┐рдЦрддреАред рдпрджрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рдзрди рд╣реИрдВ (рдЬреИрд╕реЗ рдКрдкрд░ рдореЗрд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ), рддреЛ рдЙрд╕ рд╕реАрдорд╛ рд╕реЗ рдХреНрдпрд╛ рд▓рд╛рдн рд╣реЛрддрд╛ рд╣реИ? рдореЗрд░реЗ рд▓рд┐рдП, рдпрд╣ рдХреЗрд╡рд▓ рдЪреАрдЬреЛрдВ рдХреЛ рдЬрдЯрд┐рд▓ рдХрд░рддрд╛ рд╣реИред рдореЗрд░реЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЕрдорд╛рдиреНрдп/рдЕрдЬреНрдЮрд╛рдд рдорд╛рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЖрдкрдХреЛ рдЖрд╡реЗрджрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИ - рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдлреЗрдВрдХ рджреЗрдВ, рдХреБрдЫ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд░ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░реЗрдВ рдпрд╛ рдЗрд╕реЗ рд╕рд╣реЗрдЬреЗрдВред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рдЦреНрдд рдПрдирдо рдЬреЛ рдЕрдорд╛рдиреНрдп рдорд╛рдиреЛрдВ рдХреЛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдмрд╣реБрдд рд╕реАрдорд┐рдд рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдЖрдкрдХрд╛ рдРрдк рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рд╕реЗ рдЕрд▓рдЧ рд╣реИ рдФрд░ рдЕрдорд╛рдиреНрдп рдЗрдирдкреБрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдЖрдВрддрд░рд┐рдХ рдПрдирдо рдХреА рддрд░рд╣ рдЬрд┐рд╕реЗ рдХреЗрд╡рд▓ рдЖрдк рджреЗрдЦ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЖрдИрдУрдЯрд╛ рдХреЗ рд╕рд╛рде рдХреЙрдиреНрд╕ рд╕рдВрдХрд▓рди рд╕рдордп рдореЗрдВ рд╕реБрд░рдХреНрд╖рд┐рдд рдирд╣реАрдВ рд╣реИ, рдЬрд╛рдБрдЪ рдХреЛ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рджреЗрд░реА рд╣реЛрдЧреА, рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рдЬрд╛рдБрдЪ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрддрд░ рдкрд░ рдирд╣реАрдВ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдИрдУрдЯрд╛ рдПрдирдо рдХреЛ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдореИрдВ рдПрдирдо рдХреЛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИред

рдЕрд╡реИрдз рдореВрд▓реНрдп рдЕрд╡реИрдз рд╣реИрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЬрд╝реЛрд░ рджреЗрдирд╛ рдЬрд╝рд░реВрд░реА рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рдЗрд╕реЗ рд▓рд╛рдн рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ред

рдореИрдВ рдЗрд╕ рддрд░реНрдХ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддрд╛ред рдкреНрд░рдХрд╛рд░ рдорд╛рдиреЛрдВ рдХреЗ рд╕рдореБрдЪреНрдЪрдп рд╣реИрдВред рдЖрдк рдХрд┐рд╕реА рд╡реЗрд░рд┐рдПрдмрд▓ рдХреЛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдЬрд┐рд╕рдХрд╛ рдорд╛рди рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдХреНрдпрд╛ рдореИрдВ рдХреБрдЫ рдЧрд▓рдд рд╕рдордЭ рд░рд╣рд╛ рд╣реВрдБ?

рдкреАрдПрд╕: рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ enums рдпреЛрдЧ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рд╣реИ рдФрд░ рдЙрд╕ рдореБрджреНрджреЗ рдХреЛ рдЗрд╕ рдкрд░ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд▓реЗрдиреА рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рдФрд░ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╣реЛрдиреЗ рджреЗрдВ: рд╣рд░ рдХреЛрдИ рдЗрд╕реЗ рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдн рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ рд╣реИред

рдпрджрд┐ рдЖрдк рдЙрд╕ рддрд░рд╣ рд╕реЗ рд╕рдЦреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ a) "рдЕрд╡реИрдз рдореВрд▓реНрдп рдЕрд╡реИрдз рд╣реИрдВ" рдПрдХ рддрдирд╛рддрдиреА рд╣реИ рдФрд░ b) рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд▓рд╛рдн рдХреЗ рд░реВрдк рдореЗрдВ рдирд╣реАрдВ рдЧрд┐рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдХреЙрдиреНрд╕реНрдЯ-рдЖрдзрд╛рд░рд┐рдд рдПрдирдо рдХреЗ рд╕рд╛рде, рдЖрдкрдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдореЗрдВ, рдЕрд╡реИрдз рдореВрд▓реНрдп рднреА рдЕрд╡реИрдз рд╣реИрдВред рдкреНрд░рдХрд╛рд░ рдмрд╕ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдореВрд▓реНрдпреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдпрджрд┐ рдПрдирдо рдЗрдирдЯреНрд╕ рд╣реИрдВ рдФрд░ рдХреЛрдИ рднреА рдЗрдВрдЯ рдХрд╛рдиреВрдиреА рд╣реИ (рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ) рддреЛ рдПрдХрдорд╛рддреНрд░ рд▓рд╛рдн рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд╛рдорд┐рдд рдорд╛рди рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рд╣реЛрддреЗ рд╣реИрдВред

рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рд╕рд┐рд░реНрдл const/iota рд╣реИ рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧрд░ рдЪрд▓рд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ fmt рдкреИрдХреЗрдЬ рдкреНрд░рддрд┐рдмрд┐рдВрдм рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред (рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рддрд╛рд░ рд╕реНрд░реЛрдд рдореЗрдВ рдирд╛рдореЛрдВ рд╕реЗ рднрд┐рдиреНрди рд╣реЛрдВ рддреЛ рдЖрдкрдХреЛ рдЕрднреА рднреА рд╕реНрдЯреНрд░рд┐рдВрдЧрд░ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛)ред

@jimmyfrasche рд╕реНрдЯреНрд░рд┐рдВрдЧрд┐рдлрд┐рдХреЗрд╢рди рд╕рд┐рд░реНрдл рдПрдХ рдЕрдЪреНрдЫрд╛ рдмреЛрдирд╕ рд╣реИред рдореЗрд░реЗ рд▓рд┐рдП рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдКрдкрд░ рдореЗрд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ рдХрд┐ рджрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рди рд░рдирдЯрд╛рдЗрдо рдкрд░ рджрд┐рдП рдЧрдП рдПрдирдо рдкреНрд░рдХрд╛рд░ рдХрд╛ рдорд╛рдиреНрдп рдорд╛рди рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдпрд╛ рдЧрдпрд╛

type Foo enum {
    Val1 = 1
    Val2 = 2
}

рдФрд░ рдкрд░рд╛рд╡рд░реНрддрди рд╡рд┐рдзрд┐ рдЬреИрд╕реЗ

func IsValidEnum(v {}interface) bool

рд╣рдо рдХреБрдЫ рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

a := Foo.Val1
b := Foo(-1)
reflection.IsValidEnum(a) //returns true
reflection.IsValidEnum(b)  //returns false

рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдк рд╕реА # рдореЗрдВ рдПрдирдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЬрд╛рд╡рд╛ рдиреЗ рдЬреЛ рдХрд┐рдпрд╛ рдЙрд╕рдХрд╛ рдЖрдБрдЦ рдмрдВрдж рдХрд░рдХреЗ рдЕрдиреБрд╕рд░рдг рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕ рдордзреНрдп рдореИрджрд╛рди рдкрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрдмреНрдЬрд╛ рдХрд░ рд▓рд┐рдпрд╛ред рд╕реА # рдореЗрдВ рд╡реИрдзрддрд╛ рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдЖрдк Enum.IsDefined рд╕реНрдерд┐рд░ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред

@crecker рдЙрд╕ рдФрд░ рдХреЙрдиреНрд╕реНрдЯ/рдЖрдИрдУрдЯрд╛ рдХреЗ рдмреАрдЪ рдПрдХрдорд╛рддреНрд░ рдЕрдВрддрд░ рд╣реИ
рдкреНрд░рддрд┐рдмрд┐рдВрдм рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдЬрд╛рдирдХрд╛рд░реАред рдпрд╣ рд╕рдВрдкреВрд░реНрдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рд▓рд╛рдн рдирд╣реАрдВ рд╣реИ
рдирдП рдкреНрд░рдХрд╛рд░ рдХрд╛ред

рдереЛрдбрд╝рд╛ рдкрд╛рдЧрд▓ рд╡рд┐рдЪрд╛рд░:

рдПрдХ рд╣реА рдкреИрдХреЗрдЬ рдореЗрдВ рдШреЛрд╖рд┐рдд рд╕рднреА рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рдирд╛рдо рдФрд░ рдорд╛рди рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдВ
рдЙрдирдХреЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╣реЛрдЧрд╛
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХреЙрдиреНрд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрд╕ рд╕рдВрдХреАрд░реНрдг рд╡рд░реНрдЧ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдирд╛ рдЕрдЬреАрдм рд╣реИред

рдореЗрд░реЗ рд▓рд┐рдП рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдКрдкрд░ рдореЗрд░реЗ рдкреНрд░рд╕реНрддрд╛рд╡ рдореЗрдВ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ

рдЖрдИрдПрдордУ рдпрд╣ рдЗрд╕ рдЪрд░реНрдЪрд╛ рдХреЛ рдЦреАрдВрдЪрдиреЗ рд╡рд╛рд▓реА рдореБрдЦреНрдп рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИ: "рдореБрдЦреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ" рдХреЗ рд╕реЗрдЯ рдХреА рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреА рдХрдореАред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рд╡рд┐рдЪрд╛рд░ рд╣реИред
рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореБрдЭреЗ рдЕрднреА рднреА рдЙрд╕ рд╕реЗрдЯ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрднрд╡ рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рдкреНрд░рд╛рд░реВрдк рдкрд╕рдВрдж рд╣реИред рд╕реВрдЪреА рдореЗрдВ рдПрдХ рднреА рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ рдЕрднреА рднреА рдЗрд╕ рддрдереНрдп рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдХрд░реВрдВрдЧрд╛ рдХрд┐ "рдХреНрдпрд╛ рдЧрд▓рдд рд╣реБрдЖ" рдЦрдВрдб рдХреЗрд╡рд▓ рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рди рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рдХрд┐рдпрд╛ )ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдЬреЛрдбрд╝реЗ рдХреЛ рдЬреЛрдбрд╝рдирд╛, рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдк-рдЪреЗрдХрд┐рдВрдЧ рдХреА рдХрдореА рд╕реЗ рдЖрдЙрдЯреЗрдЬ/рдмрдЧ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдпрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓рддрд╛ рдорджрджрдЧрд╛рд░ рд╣реЛрдЧреАред

@jimmyfrasche рд▓реЗрдХрд┐рди рдпрд╣ рдХрдИ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдПрдХ рдмрдбрд╝реА рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ - рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдирд╛ред рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рд╕реЗ рдХрд┐рд╕реА рднреА рдорджрдж рдХреЗ рдмрд┐рдирд╛ рдЖрдкрдХреЛ рдЗрд╕реЗ рд╣рд╛рде рд╕реЗ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдРрд╕рд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдЖрдк рдХреЛрдб рдХреА рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рд╣рд╛рдпрдХ рд╕рддреНрдпрд╛рдкрди рд╣реЛрдиреЗ рд╕реЗ рдЗрд╕рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЙрд╕рдХреЗ рдКрдкрд░ рд╕реНрдЯреНрд░рд┐рдВрдЧрд┐рдлрд┐рдХреЗрд╢рди рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рд▓реЙрдЧрд┐рдВрдЧ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЙрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕реНрд╡рд░реВрдкрд┐рдд рдирд╛рдо рд╣реЛрдВрдЧреЗ рди рдХрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рдиред

рджреВрд╕рд░реА рдУрд░, рдПрдирдо рдХреЛ рд╕рдЦреНрдд рдмрдирд╛рдиреЗ рд╕реЗ рд╕рдВрднрд╛рд╡рд┐рдд рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЧрдВрднреАрд░ рд░реВрдк рд╕реЗ рд╕реАрдорд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрдм рдЖрдк рдЙрдиреНрд╣реЗрдВ рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЕрдорд╛рдиреНрдп рдорд╛рдиреЛрдВ рдХреЛ рд╕рдВрд░рдХреНрд╖рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдирдо рдХреЛ рдЫреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рд╕рд╛рджреЗ рдореВрд▓реНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд╕рдВрднрд╡рддрдГ рдмрд╛рдж рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдПрдирдо рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЖрдк рдЕрдорд╛рдиреНрдп рдорд╛рди рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдлреЗрдВрдХ рд╕рдХрддреЗ рд╣реИрдВред рджреВрд╕рд░реЛрдВ рдореЗрдВ рдЖрдк рдХреБрдЫ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди рдкрд░ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ, рдЖрдк рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЕрдкрдиреЗ рдЯрд╛рдЗрдк рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рд╕реЗ рд▓рдбрд╝ рд░рд╣реЗ рд╣реИрдВред

рдЬрд╛рд╡рд╛ рдПрдирдо рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЯреЛрдмрдл рдХреЛ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╕ рджреЗрдЦреЗрдВред

@Merovius рд╕рддреНрдпрд╛рдкрди рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдЗрд╕реЗ рдХрдИ рдмрд╛рд░ рдХрд╡рд░ рдХрд┐рдпрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдФрд░ рдХреНрдпрд╛ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рд╕рддреНрдпрд╛рдкрди рдХреЗ рдмрд┐рдирд╛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЗрдирдкреБрдЯ рдХреЛ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ред рд╕рдорд╕реНрдпрд╛ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рд╕рд╛рде рд╣реА рдкреНрд░рд╕реНрддрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдЗрд╕рд╕реЗ рдХреИрд╕реЗ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдореИрдВ рдХреБрдЫ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рд░ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрд╕ рд╕рддреНрдпрд╛рдкрди рдХреЛрдб рдореЗрдВ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдореБрдЭреЗ рдХрдИ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рд╕рдорд╛рди рдЕрд╡рдзрд╛рд░рдгрд╛ рдХреЗ рд╕рд╛рде рдХрдИ рдмрд╛рд░ рдмрд┐рдЯ рдХрд░рддреА рд╣реИрдВ, рдЬрд┐рд╕реЗ рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

рджреВрд╕рд░реА рддрд░рдл, рдореИрдВ рдирд╣реАрдВ рджреЗрдЦрддрд╛ (рдХреНрд╖рдорд╛ рдХрд░реЗрдВ рдЕрдЧрд░ рдореБрдЭреЗ рдХреБрдЫ рдпрд╛рдж рдЖрдпрд╛) рдПрдирдо рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдХреЛрдИ рддрд░реНрдХ рдЬреЛ рдЕрдорд╛рдиреНрдп рдорд╛рдиреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИред рдпрд╣ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдЕрдЪреНрдЫрд╛ рдФрд░ рд╕рд╛рдл-рд╕реБрдерд░рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдореЗрд░реА рдорджрдж рдХрд░рддреЗ рд╣реБрдП рдирд╣реАрдВ рджреЗрдЦрддрд╛ред

рдРрд╕реА рдХрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ рд▓реЛрдЧ рдПрдирдо рд╕реЗ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЕрдорд╛рдиреНрдп рдорд╛рдиреЛрдВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╕реНрдЯреНрд░рд┐рдВрдЧреАрдХрд░рдг, рд╕рддреНрдпрд╛рдкрди, рд╕рдЦреНрдд/рдвреАрд▓рд╛, рдЧрдгрдирд╛ - рдЬреЛ рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдЙрд╕рд╕реЗ рдХрд╛рдлреА рдЕрдзрд┐рдХ рд╣реИред рд╣рд░ рдХреЛрдИ (рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдореЗрд░реЗ рд╕рд╣рд┐рдд) рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдмрд╕ рдЙрдиреНрд╣реЗрдВ рдЗрдзрд░-рдЙрдзрд░ рдХрд░ рджреЗрддрд╛ рд╣реИред рд╕рдЦреНрдд/рдвреАрд▓рд╛ рдЙрдирдХреЗ рдкрд░рд╕реНрдкрд░ рд╡рд┐рд░реЛрдзреА рд╕реНрд╡рднрд╛рд╡ рдХреЗ рдХрд╛рд░рдг рд╡рд┐рд╡рд╛рдж рдХрд╛ рдореБрдЦреНрдп рдмрд┐рдВрджреБ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИред рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рд░ рдХреЛрдИ рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рд╕реЗ рд╕рд╣рдордд рд╣реЛрдЧрд╛ред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕рдорд╛рдзрд╛рди рдЙрди рджреЛрдиреЛрдВ рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдЪреБрдирдиреЗ рджреЗрдирд╛ рд╣реЛ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдРрд╕реА рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдпрд╣ рджреЗрдЦ рд╕рдХреЗ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреА рд╣реИред

@crecker рдЙрдкрд░реЛрдХреНрдд рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдбреЗрдЯрд╛ рдореЗрдВ рдХреЙрдиреНрд╕реНрдЯ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХрд╛ рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ
рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпрд╛рдБ рдЙрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬрд╝реЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВрдЧреА рдЬреЛ рдЖрдк рдорд╛рдБрдЧ рд░рд╣реЗ рд╣реИрдВ
рдПрдХ рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░рд┐рдЪрдп рдХреЗ рдмрд┐рдирд╛ред

рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рддрд░реАрдХрд╛ рд╣реИ, рдФрд░ рдореИрдВ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рднреА рдХрд╛рдлреА рдирдпрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╣реИ

type Day struct {
    value string
}

// optional, if you need string representation
func (d Day) String() string { return d.value }

var (
    Monday = Day{"Monday"}
    Tuesday = Day{"Tuesday"}
)

func main() {
    getTask(Monday)
}

func getTask(d Day) string {
    if d == Monday {
        fmt.Println("today is ", d, "!тАЭ) // today is Monday !
        return "running"
    }

    return "nothing to do"
}

рд▓рд╛рдн :

  • рдЖрдкрдХреЛ type Day рд╕реЗ func getTask . рд╕реЗ рдЕрд▓рдЧ рдХреБрдЫ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ
    https://play.golang.org/p/4JZOIG5PbRX

  • рдкреБрди: рдХреНрд░рдорд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЖрдкрдХрд╛ рдХреЛрдб рдирд╣реАрдВ рдЯреВрдЯрддрд╛ ( iota рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдореБрд╢реНрдХрд┐рд▓ рд╣реИрдВ)

  • рдХреЛрдб рдЬрдирд░реЗрдЯрд░ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ

  • рдирдХреНрд╢реЗ рдХреЗ рд╕рд╛рде рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
    https://play.golang.org/p/KlTNWrJpbDi

  • рдкреБрдирд░рд╛рд╡реГрддреНрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
    https://play.golang.org/p/ld3TNtenEkD

рдиреБрдХрд╕рд╛рди :

  • рдЖрдк рдЕрднреА рднреА рдПрдХ рдЕрдирд╛рдо рд╕рдВрд░рдЪрдирд╛ рдХреЛ getTask рддрдХ рд╕рдВрдХрд▓рдХ рд╢рд┐рдХрд╛рдпрдд рдХреЗ рдмрд┐рдирд╛ рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
    https://play.golang.org/p/NaV38og7e2h

  • рдирд┐рд░рдВрддрд░ рд╕рдВрд░рдЪрдирд╛рдПрдВ рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИрдВ, рдХреЗрд╡рд▓ var
    https://play.golang.org/p/X6KSPACA4N0

рдХреНрдпрд╛ рд╣рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдирдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

рдХрд┐рд╕реА рдХреЛ рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╣реИ:

NotADay := Day{"NotADay"}
getTask(NotADay)

рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЪрд░ рдХрд╛ рдЙрдкрднреЛрдХреНрддрд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреА рдЙрдЪрд┐рдд рдЬрд╛рдВрдЪ рдХреЗ рд╕рд╛рде рдкрдХрдбрд╝ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ (рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЛрдИ рдЦрд░рд╛рдм рдЧрд┐рд░рд╛рд╡рдЯ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╢рдирд┐рд╡рд╛рд░ рдпрд╛ рд░рд╡рд┐рд╡рд╛рд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдкреНрддрд╛рд╣ рдХрд╛ рджрд┐рди рд╣реИ), рд▓реЗрдХрд┐рди рдпрд╣ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рд░рдирдЯрд╛рдЗрдо рддрдХред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЧрд▓рддреА рдХреЛ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдкрдХрдбрд╝рд╛ рдЬрд╛рдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдЧрд╛, рд░рдирдЯрд╛рдЗрдо рдкрд░ рдирд╣реАрдВред

@bpkroth
рдЕрдкрдиреЗ рдкреИрдХреЗрдЬ рдореЗрдВ Day рд╣реЛрдиреЗ рдФрд░ рдХреЗрд╡рд▓ рдЪрдпрдирд┐рдд рдлрд╝реАрд▓реНрдб рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдХреЗ, рдореИрдВ $#$ package day $#$ рдХреЗ рдмрд╛рд╣рд░ Day рдкреНрд░рдХрд╛рд░ рдХреЗ рдирдП рдорд╛рди рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддрд╛
рд╕рд╛рде рд╣реА, рдЗрд╕ рддрд░рд╣ рдореИрдВ рдЕрдЬреНрдЮрд╛рдд structs рдХреЛ getTask . рдкрд░ рдкрд╛рд╕ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛

./рджрд┐рди/рджрд┐рди.go

package day

type Day struct {
    value string
}

func (d Day) String() string { return d.value }

var (
    Monday  = Day{"Monday"}
    Tuesday = Day{"Tuesday"}
    Days    = []Day{Monday, Tuesday}
)

./main.go

package main

import (
    "fmt"
    "github.com/somePath/day"
)

func main() {
    january := day.Day{"january"} // implicit assignment of unexported field 'value' in day.Day literal

    var march struct {
        value string
    }
    march.value = "march"
    getTask(march) // cannot use march (type struct { value string }) as type day.Day in argument to getTask

    getTask(day.Monday)
}

func getTask(d day.Day) string {
    if d == day.Monday {
        fmt.Println("today is ", d, "!") // today is Monday !
        return "running"
    }

    return "nothing to do"
}

func iterateDays() {
    for _, d := range day.Days {
        fmt.Println(d)
    }
}

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдкреВрд░реЗ рдЬреАрд╡рди рдореЗрдВ рдХрд┐рд╕реА рднреА рдЕрдиреНрдп рднрд╛рд╖рд╛ рдХреЛ рдХрднреА рдирд╣реАрдВ рджреЗрдЦрд╛ рд╣реИ рдЬреЛ рдХрд┐ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдФрд░ рд╕рд╣рд╛рдпрдХ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдЬреИрд╕реЗ рдХрд┐ рдПрдирдо, рдЯрд░реНрдирд░реА рдСрдкрд░реЗрдЯрд░реЛрдВ, рдЕрдкреНрд░рдпреБрдХреНрдд рдЪрд░ рдХреЗ рд╕рд╛рде рд╕рдВрдХрд▓рди, рдпреЛрдЧ рдкреНрд░рдХрд╛рд░, рдЬреЗрдирд░рд┐рдХ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░, рдЖрджрд┐ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдкрд░ рдЬреЛрд░ рдирд╣реАрдВ рджреЗрддреА рд╣реИ ...

рдХреНрдпрд╛ рдЧреЛрд▓рдВрдЧ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдЬрд┐рдХ рдкреНрд░рдпреЛрдЧ рд╣реИ рдХрд┐ рджреЗрд╡рддрд╛ рдХрд┐рддрдиреЗ рдореВрд░реНрдЦ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ?

@ gh67uyyghj рдХрд┐рд╕реА рдиреЗ рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгреА рдХреЛ рд╡рд┐рд╖рдп рд╕реЗ рдкрд░реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ рд╣реИ! рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдореЗрд░реЗ рдЙрддреНрддрд░ рдХреЗ рд▓рд┐рдП рднреА рдРрд╕рд╛ рд╣реА рдХрд░реЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рд╣рд╛рдБ рд╣реИред GoLang рдореЗрдВ рдлреАрдЪрд░рд▓реЗрд╕ рд╣реЛрдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХреБрдЫ рднреА рдЬреЛ GoLang рдХреЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИ, рд╡рд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдлреАрдЪрд░ рд╣реИ рдЬреЛ GoLang рдХреЗ рдкрд╛рд╕ рд╣реИ рдЬреЛ рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдирд╣реАрдВ рд╣реИ !!

@ рдПрд▓-рдУрд░рд┐рд╕ рдпрд╣ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рд╛рде рдПрдирдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реА рджрд┐рд▓рдЪрд╕реНрдк рддрд░реАрдХрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдПрдирдо рдХреАрд╡рд░реНрдб (рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рднрд╛рд╖рд╛ рдХреЛ рдХреБрдЫ рдФрд░ рдЬрдЯрд┐рд▓ рдХрд░рддрд╛ рд╣реИ) рд╣реЛрдиреЗ рд╕реЗ рдпрд╣ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПрдЧрд╛:

  • рд▓рд┐рдЦреЛ
  • рдкрдврд╝рдирд╛
  • рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╛рд░рдг

рдЖрдкрдХреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ (рдЬреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрдЬ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ) рдПрдирдо (рдХрд┐рд╕реА рди рдХрд┐рд╕реА рд░реВрдк рдореЗрдВ) рд╣реЛрдиреЗ рдХрд╛ рддрд╛рддреНрдкрд░реНрдп рд╣реИ:

  • рдПрдХ рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдЯрд╛рдЗрдк рдмрдирд╛рдПрдВ
  • рдПрдХ рд╡рд┐рдзрд┐ рдмрдирд╛рдПрдБ
  • рдЪрд░ рдмрдирд╛рдПрдВ (рд╕реНрдерд┐рд░рд╛рдВрдХ рднреА рдирд╣реАрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЙрди рдореВрд▓реНрдпреЛрдВ рдХреЛ рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ)

рдЗрд╕реЗ рдкрдврд╝рдиреЗ, рд▓рд┐рдЦрдиреЗ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рддрд░реНрдХ рдХрд░рдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ _that_ рдЕрдзрд┐рдХ рд╕рдордп рдирд╣реАрдВ) (рдпрд╣ рд╕рдордЭреЗрдВ рдХрд┐ рдпрд╣ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдирдо рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП)ред

рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓рддрд╛ рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдореВрд▓реНрдп рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╕рд╣реА рдиреЛрдЯ рдкрд░ рд╣рдорд▓рд╛ рдХрд░рддрд╛ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж @andradei
рд╣рд╛рдБ рдпрд╣ рдПрдХ рд╕рдорд╛рдзрд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рднрд╛рд╖рд╛ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдЗрд╕реЗ рдЫреЛрдЯрд╛ рдФрд░ рд╕рд░рд▓ рд░рдЦрдирд╛ рд╣реИ
рд╣рдо рдпрд╣ рднреА рддрд░реНрдХ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЪрд▓рд┐рдП рдЬрд╛рд╡рд╛ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ :)

рдореИрдВ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдЧреЛ 2 рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реВрдВрдЧрд╛, рдмреЗрд╣рддрд░ рддреНрд░реБрдЯрд┐ рдкреНрд░рдмрдВрдзрди рдЬреИрд╕реЗред рдореБрдЭреЗ рдЗрди рдПрдирдореЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдореВрд▓реНрдп рдкреНрд░рджрд╛рди рдХрд░реЗрдЧрд╛

рдЕрдкрдиреЗ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рд▓реМрдЯрдирд╛:

  • рдпрд╣ рдЗрддрдирд╛ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдирд╣реАрдВ рд╣реИ; рдХрдо рд╕реЗ рдХрдо, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреБрдЫ рдЬрдирд░реЗрдЯрд░ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ (рд▓реЗрдХрд┐рди, рдХреНрдпрд╛ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрддрдирд╛ рдХреЛрдб рд╣реИ?)
  • рдПрдХ рдирдпрд╛ рдХреАрд╡рд░реНрдб, рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдкреВрд░реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрдЯ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рд╣рдо рдХрд┐рддрдиреА "рд╕рд╛рджрдЧреА" рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ?
  • рддрд░реАрдХреЛрдВ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рд░рдЪрдирд╛рддреНрдордХ рд╣реЛрдирд╛ рднреА рдЙрди рдПрдирдореЛрдВ рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдк рдХреНрд╖рдорддрд╛рдПрдВ рдЬреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ
  • рдкрдардиреАрдпрддрд╛ рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╣реИ; рд╢рд╛рдпрдж рдЗрд╕рдХреЗ рдКрдкрд░ рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ, рдпрд╛ рдЕрдкрдиреЗ рдЪрд░реЛрдВ рдХреЛ рдЙрдкрд╕рд░реНрдЧ рдХрд░реЗрдВ
package day

// Day Enum
type Day struct {
    value string
}

@ рдПрд▓-рдУрд░рд┐рд╕ рдореИрдВ рджреЗрдЦрддрд╛ рд╣реВрдВред рдореИрдВ рдЧреЛ 2 рдХреЗ рдкреНрд░рд╕реНрддрд╛рд╡реЛрдВ рдХреЛ рд▓реЗрдХрд░ рднреА рдЙрддреНрд╕рд╛рд╣рд┐рдд рд╣реВрдВред рдореЗрд░рд╛ рддрд░реНрдХ рд╣реИ рдХрд┐ рдЬреЗрдирд░рд┐рдХ рднрд╛рд╖рд╛ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рдПрдирдореЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рдмрдврд╝рд╛ рджреЗрдЧрд╛ред рд▓реЗрдХрд┐рди рдЕрдкрдиреА рдмрд╛рддреЛрдВ рдкрд░ рдЯрд┐рдХреЗ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП:

  • рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрддрдирд╛ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдирд╣реАрдВ рд╣реИ
  • рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдПрдирдо рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд┐рддрдиреА рдкреНрд░рд╕рд┐рджреНрдз рд╣реИ, рдореИрдВ рдХрд╣реВрдВрдЧрд╛ рдХрд┐ рдЬреНрдпрд╛рджрд╛рддрд░ рд▓реЛрдЧ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рд╣реИ (рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕реЗ рд╕рд╛рдмрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛)ред рднрд╛рд╖рд╛ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдЗрд╕рдХреЗ рд▓рд╛рднреЛрдВ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреА "рдХреАрдордд" рдкрд░ рд╣реЛрдЧреАред
  • рдпрд╣ рд╕рдЪ рд╣реИ, рдПрдирдо рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛рдПрдБ рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ рдореЗрд░реЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИрдВ рдЬрдм рдЬреЗрдирд░реЗрдЯреЗрдб рдкреНрд░реЛрдЯреЛрдмрдл рдХреЛрдб рдХреА рдЬрд╛рдБрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рдПрдирдо рдХреА рдирдХрд▓ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдПред
  • рдпрд╣ рднреА рд╕рдЪ рд╣реИред

рдореИрдВ рдЗрд╕ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЙрддреНрдкрд╛рджрдХрддрд╛ рдкрд░ рдорд╣рд╛рди рдореВрд▓реНрдп рд╕рд╛рджрдЧреА рд╣реИ, рдФрд░ рдЖрдк рдЗрд╕реЗ рддрдм рддрдХ рд░рдЦрдиреЗ рдХреА рдУрд░ рдХреНрдпреЛрдВ рдЭреБрдХрддреЗ рд╣реИрдВ рдЬрдм рддрдХ рдХрд┐ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рди рд╣реЛред Enums рднрд╛рд╖рд╛ рдХреЛ рдЗрддрдиреА рддреЗрдЬреА рд╕реЗ рдмрджрд▓ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдм рдФрд░ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ/рд╡рд┐рдкрдХреНрд╖реЛрдВ рдХрд╛ рдЖрдХрд▓рди рдХрд░рдиреЗ рдореЗрдВ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдХрд╛рдлреА рд╕рдордп рд▓рдЧреЗрдЧрд╛ред рддреЛ рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдЖрдкрдХреЗ рдЬреИрд╕реЗ рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди, рдЬрд╣рд╛рдВ рдХреЛрдб рдХреЛ рдкрдврд╝рдирд╛ рдЕрднреА рднреА рдЖрд╕рд╛рди рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдЕрднреА рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред

рджреЛрд╕реНрддреЛрдВ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рдЪрд╛рд╣рддреЗ рд╣реИрдВ! рдкреЙрдЗрдВрдЯрд░реНрд╕ рдФрд░ " рдПрдирдореНрд╕ " рдХреЛ _nowdays_ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдорд┐рд▓рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: https://play.golang.org/p/A7rjgAMjfCx

Enum рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИред рд╣рдореЗрдВ рдЗрд╕реЗ рдПрдХ рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирдирд╛ тАЛтАЛтАЛтАЛрдЪрд╛рд╣рд┐рдПред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдореИрдВ рдордирдорд╛рдиреА рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдПрдирдо рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:

package application

type Status struct {
Name string
isFinal bool
}

enum Status {
     Started = &Status{"Started",false}
     Stopped = &Status{"Stopped",true}
     Canceled = &Status{"Canceled",true}
}

// application.Status.Start - to use

рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрд░рдЪрдирд╛ рдХреИрд╕реЗ рдорд╛рд░реНрд╢рд▓ рд╣реИ рдФрд░ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рд╣реИ рдФрд░ рдХреИрд╕реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реИ рдФрд░ рдЗрд╕реА рддрд░рд╣ред
рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдЧрд░ рдореИрдВ "рдЕрдЧрд▓рд╛" рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рддреЛ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдЗрд╕рдХреЗ рд▓рд┐рдП рдЧреЛ рдХреЛ рдкрд╣рд▓реЗ рдЧрд╣рд░реА рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмрд┐рдирд╛ рдореИрдВ рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдЖрдк рдПрдХ рд╣реА рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдПрдирдо рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

type Status enum {
  Started
  Stopped
}

func isFinal(s Status) bool {
  exhaustive switch(s) {
    case Started: return false;
    case Stopped: return true;
  }
}

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрд╕рд╛рди рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП

func isFinal(s Status) bool {
  return s == Status.Stopped
}

Go2 . рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддрд╛рд╡

рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдПрдирдо рдЯрд╛рдЗрдк рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╣реИрдВред
рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдерд╛ рдХрд┐ рдПрдирдо рдЕрд▓рдЧ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред
рдЗрд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╛рдорд╕реНрдерд╛рди рд╕реЗ рдмрдВрдзреЗ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрд╛ рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

enum Status uint8 {
  Started  // Status.Started == 0
  Stopped // Status.Stopped == 1, etc, like we have used iota
}
// or 
enum Status string  {
  Started // Status.Started == "Started", like it works with JSON
  Stopped // Status.Stopped == "Stopped", etc
}
// unless you wanna define its values explicitly
enum Status {
  Started "started"  // compiler can infer underlying type
  Stopped "finished"
}
// and enums are type extensions and should be used like this
type MyStatus Status

MyStatus validatedStatus // holds a nil until initialized

// for status value validation we can use map pattern
if validatedStatus, ok := MyStatus[s]; ok {
  // this value is a valid status
  // and we can use it later as regular read-only string
  // or like this
  if validatedStatus == MyStatus.Started {
     fmt.Printf("Hey, my status is %s", validatedStatus)
  }
}

Enums рдкреНрд░рдХрд╛рд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╣реИрдВ, "рд╕реНрдерд┐рд░рд╛рдВрдХ рдХрдВрдЯреЗрдирд░"ред

рдЯрд╛рдЗрдк рд▓рд╡рд░реНрд╕ рдХреЗ рд▓рд┐рдП

рдЬреЛ рд▓реЛрдЧ рдЗрд╕реЗ рдЯрд╛рдЗрдк рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЙрдирдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЯреЗрдХреНрд╕ рд╡рд┐рдХрд▓реНрдк

type Status uint8 enum {
  Started  // Status.Started == 0
  Stopped // Status.Stopped == 1, etc, like we have used iota
}

рд▓реЗрдХрд┐рди рд╣рдо рдЙрди рд╕реНрдкрд╖реНрдЯ рд╢реАрд░реНрд╖ рд╕реНрддрд░реАрдп рдШреЛрд╖рдгрд╛рдУрдВ рд╕реЗ рднреА рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВ

type Status enum {
  Started  // Status.Started == 0
  Stopped // Status.Stopped == 1, etc, like we have used iota
}

рд╕рддреНрдпрд╛рдкрди рдЙрджрд╛рд╣рд░рдг рд╡рд╣реА рд░рд╣рддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдорд╛рдорд▓реЗ рдореЗрдВ

type Status1 uint8 enum {
  Started  // Status1.Started == 0
  Stopped // Status1.Stopped == 1, etc, like we have used iota
}

type Status2 uint8 enum {
  Started  // Status1.Started == 0
  Stopped // Status1.Stopped == 1, etc, like we have used iota
}

Status1.Started == Status2.Started рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕рд╛ рд╣реИ?
рдорд╛рд░реНрд╢рд▓рд┐рдВрдЧ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ?

рдЕрдЧрд░ рдореИрдВ рдХреЛрдИ рдкрдж рдмрджрд▓реВрдВ?

type Status uint8 enum {
  Started  // Status.Started == 0
  InProcess
  Stopped // Status.Stopped == 1, etc, like we have used iota
}

рдореИрдВ рдЕрдкрд░рд┐рд╡рд░реНрддрдиреАрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ @Goodwine рд╕реЗ рд╕рд╣рдордд рд╣реВрдВред

рдорд╛рд░реНрд╢рд▓рд┐рдВрдЧ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╡рд╛рд▓ рд╣реИред
рдпрд╣ рд╕рдм рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдореВрд▓реНрдп рдХреЗ рд╕рд╛рде рдХреИрд╕рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдпрджрд┐ рд╣рдо рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ Status1.Started рдмрд░рд╛рдмрд░ рд╣реЛрдЧрд╛ Status2.Started ред
рдпрджрд┐ рд╣рдо рдкреНрд░рддреАрдХрд╛рддреНрдордХ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЙрдиреНрд╣реЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореВрд▓реНрдп рдорд╛рдирд╛ рдЬрд╛рдПрдЧрд╛ред

рдХреБрдЫ рдбрд╛рд▓рдиреЗ рд╕реЗ рдореВрд▓реНрдпреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрдЧрд╛ (рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдЬреИрд╕реЗ рдпрд╣ iota рдХреЗ рд╕рд╛рде рдЬрд╛рддрд╛ рд╣реИ)ред
рдЗрд╕рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдШреЛрд╖рдгрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдорд╛рди рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

type Status uint8 enum {
  Started  0
  InProcess 2
  Stopped 1
}

рдпрд╣ рдЬрдЧрдЬрд╛рд╣рд┐рд░ рдмрд╛рдд рд╣реИред
рдпрджрд┐ рд╣рдо рдРрд╕реЗ рдореБрджреНрджреЛрдВ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рд╣рдореЗрдВ рдПрдирдо рдореВрд▓реНрдпреЛрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛рддреНрдордХ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдиреБрдорд╛рдирд┐рдд рдХрдВрдкрд╛рдЗрд▓рд░ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдореИрдВ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдорд╛рдирддрд╛ рд╣реВрдВ - рд╣реИрд╢ рдЯреЗрдмрд▓ рдмрдирд╛рдирд╛ рдпрд╛ рдкреНрд░рддреАрдХрд╛рддреНрдордХ рдирд╛рдореЛрдВ (рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕) рд╕реЗ рдЪрд┐рдкрдХреЗ рд░рд╣рдирд╛ рдЬрдм рддрдХ рдХрд┐ рдХрд╕реНрдЯрдо рдЯрд╛рдЗрдк рдХрд╛рд╕реНрдЯрд┐рдВрдЧ рдкрд░рд┐рднрд╛рд╖рд┐рдд рди рд╣реЛред

рдореБрдЭреЗ рдкрд╕рдВрдж рд╣реИ рдХрд┐ рдХреИрд╕реЗ рдЬрдВрдЧ рдХреЛ Enums рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдмрд┐рдирд╛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЗ рд╕рд╛рде рдбрд┐рдлрд╝реЙрд▓реНрдЯ

enum IpAddr {
    V4,
    V6,
}

рдХрд╕реНрдЯрдо рдкреНрд░рдХрд╛рд░

enum IpAddr {
    V4(string),
    V6(string),
}

home := IpAddr.V4("127.0.0.1");
loopback := IpAddr.V6("::1");

рдЬрдЯрд┐рд▓ рдкреНрд░рдХрд╛рд░

enum Message {
    Quit,
    Move { x: int32, y: int32 },
    Write(String),
    ChangeColor(int32, int32, int32),
}

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рд╕реА # рдЬреИрд╕реЗ рд╕рд░рд▓ рдПрдирдо рднреА рд╣реИрдВ рдЬреЛ рдЕрднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ, рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рдЙрдкрд░реЛрдХреНрдд enum s рд╕реЗ рдЖрдЧреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рд╡реЗ _рднреЗрджрднрд╛рд╡ рд╡рд╛рд▓реЗ рд╕рдВрдШ_ рд╣реИрдВ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдзрд┐рдХ рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рд╣реИрдВ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ _pattern рдорд┐рд▓рд╛рди_ рдХреЗ рд╕рд╛рде, рдЬреЛ switch рдХрд╛ рдорд╛рдореВрд▓реА рд╡рд┐рд╕реНрддрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдХреБрдЫ рдЗрд╕ рддрд░рд╣:

switch something.(type) {
case Quit:
        ...
case ChangeColor; r, g, b := something:
        ...
case Write: // Here `something` is known to be a string
        ...
// Ideally Go would warn here about the missing case for "Move"
}

рдореБрдЭреЗ рдПрдирдо рдХреЗ рдХрд┐рд╕реА рднреА рд╕рдВрдХрд▓рди рд╕рдордп рдХреА рдЬрд╛рдБрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЦрддрд░рдирд╛рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

рдХрд┐рд╕реА рджрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рднреА рд╕реНрдерд┐рд░рд╛рдВрдХреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдХрдИ рдмрд╛рд░ рдЬреЛ рдЪрд╛рд╣рд┐рдП рдерд╛:

  • рдпрд╛ рддреЛ рд╕рддреНрдпрд╛рдкрди рдХреЗ рд▓рд┐рдП (рдпрджрд┐ рд╣рдореЗрдВ рдкреВрд░рд╛ рдпрдХреАрди рд╣реИ рдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рдЗрд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдХреЗрд╡рд▓ рдЕрдЬреНрдЮрд╛рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ)

    • рдпрд╛ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреА рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП (рдбреНрд░реЙрдкрдбрд╛рдЙрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ)ред

рд╣рдо рдЖрдИрдУрдЯрд╛ рдХреЗ рд╕рд╛рде рд╕рддреНрдпрд╛рдкрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реВрдЪреА рдХреЗ рдЕрдВрдд рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреЛрдб рдХреЗ рдЕрдВрджрд░ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐рд╕реА рдФрд░ рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП iota рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрд╛рдлреА рдЦрддрд░рдирд╛рдХ рд╣реЛрдЧрд╛ рдХреНрдпреЛрдВрдХрд┐ рдЧрд▓рдд рд▓рд╛рдЗрди рдкрд░ рдПрдХ рд╕реНрдерд┐рд░рд╛рдВрдХ рдбрд╛рд▓рдиреЗ рд╕реЗ рд╕рд╛рдорд╛рди рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ (рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдЗрд╕ рдмрд╛рдд рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╣рдо рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рдХрд╣рд╛рдВ рд░рдЦрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рдмрдЧ рд╣реИ рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдХрдард┐рди)ред рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рдмрд╛рдд рдХрд╛ рдХреЛрдИ рд╡рд┐рд╡рд░рдг рдирд╣реАрдВ рд╣реИ рдХрд┐ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╣реЛрдиреЗ рдкрд░ рд╕реНрдерд┐рд░рд╛рдВрдХ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдЕрдЧрд▓реЗ рдмрд┐рдВрджреБ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ:

рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрдбрд╝реЗ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рд╣реЛрдЧрд╛ред

рдХрд┐рд╕реА рдХреЛ рдРрд╕рд╛ рдХреБрдЫ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╣реИ:

NotADay := Day{"NotADay"}
getTask(NotADay)

рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдЪрд░ рдХрд╛ рдЙрдкрднреЛрдХреНрддрд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреА рдЙрдЪрд┐рдд рдЬрд╛рдВрдЪ рдХреЗ рд╕рд╛рде рдкрдХрдбрд╝ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ (рдпрд╣ рдорд╛рдирддреЗ рд╣реБрдП рдХрд┐ рд╕реНрд╡рд┐рдЪ рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рдореЗрдВ рдзрд╛рд░рдгрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЛрдИ рдЦрд░рд╛рдм рдЧрд┐рд░рд╛рд╡рдЯ рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рд╢рдирд┐рд╡рд╛рд░ рдпрд╛ рд░рд╡рд┐рд╡рд╛рд░ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдкреНрддрд╛рд╣ рдХрд╛ рджрд┐рди рд╣реИ), рд▓реЗрдХрд┐рди рдпрд╣ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рд░рдирдЯрд╛рдЗрдо рддрдХред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЧрд▓рддреА рдХреЛ рд╕рдВрдХрд▓рди рд╕рдордп рдкрд░ рдкрдХрдбрд╝рд╛ рдЬрд╛рдирд╛ рдкрд╕рдВрдж рдХрд░реЗрдЧрд╛, рд░рдирдЯрд╛рдЗрдо рдкрд░ рдирд╣реАрдВред

@ рдПрд▓-рдУрд░рд┐рд╕ рддреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛:

package main
import "yet/it/is/not/a/good/practice/in/Go/enum/example/day"

func main()
{
  // var foo day.Day
  foo := day.Day{}
  bar(foo)
}

func bar(day day.Day)
{
  // xxxxxxxxxx
}

рд╣рдо рдЬреЛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╡рд╣ рд░рдирдЯрд╛рдЗрдо рд╕рд╛рдЗрд▓реЗрдВрд╕ рдФрд░ рдЕрдЬреАрдм рдмрдЧ рдирд╣реАрдВ рд╣реИ [рд╡рд╛рдкрд╕реА "рдХреБрдЫ рднреА рдирд╣реАрдВ"] рд▓реЗрдХрд┐рди рдПрдХ рд╕рдВрдХрд▓рди-рд╕рдордп/рдХреЛрдбрд┐рдВрдЧ-рд╕рдордп рддреНрд░реБрдЯрд┐ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ !
рд╕рдордЭрдирд╛?

  1. enum рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдирдпрд╛ рдкреНрд░рдХрд╛рд░ рд╣реИ, рдЬреЛ рдХрд┐ type State string рдХрд░рддрд╛ рд╣реИ, рдПрдХ рдирдпрд╛ рдХреАрд╡рд░реНрдб рдкреЗрд╢ рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЧреЛ рдЖрдкрдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рд╕реНрдерд╛рди рдмрдЪрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдпрд╣ рдкрдардиреАрдпрддрд╛, рдЙрджреНрджреЗрд╢реНрдп рдХреА рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред

  2. рдкреНрд░рдХрд╛рд░ рдХреА рд╕реБрд░рдХреНрд╖рд╛ рдХрд╛ рдЕрднрд╛рд╡, рдирдП string - рдпрд╛ int -рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕/рдЗрдВрдЯреНрд╕ рдХреЗ рд▓рд┐рдП рднреНрд░рдорд┐рдд рдХрд░рдирд╛ рдкреНрд░рдореБрдЦ рдмрд╛рдзрд╛ рд╣реИред рд╕рднреА рдПрдирдо рдХреНрд▓реЙрдЬ рдХреЛ const рдХреЗ рд░реВрдк рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдЬреНрдЮрд╛рдд рдореВрд▓реНрдпреЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯ рдмрдирд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдХрдВрдкрд╛рдЗрд▓рд░ рдЪреЗрдХ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

  3. Stringer рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдорд╛рдирд╡-рдкрдардиреАрдп рдкрд╛рда рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрд╣рд╛рд╡рд░рд╛ рд╣реИред рдЕрдиреБрдХреВрд▓рди рдХреЗ рдмрд┐рдирд╛, type ContextKey string рдпрд╣ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдорд╛рди рд╣реИ, рдФрд░ iota -рдЬреЗрдирд░реЗрдЯреЗрдб рдПрдирдо рдХреЗ рд▓рд┐рдП рдпрд╣ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИ, рдмрд╣реБрдд рдХреБрдЫ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ XHR рд░реЗрдбреАрд╕реНрдЯреЗрдЯ рдХреЛрдб (0 - unsent, 4 - рдХрд┐рдпрд╛ рдЧрдпрд╛) рдХреА рддрд░рд╣ рд╣реИред

    рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рд╕рдорд╕реНрдпрд╛ рдХрд╕реНрдЯрдо func (k ContextKey) String() string рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдЧрд┐рд░рд╛рд╡рдЯ рдХреЗ рд╕рд╛рде рд╣реИ, рдЬреЛ рдЖрдорддреМрд░ рдкрд░ рдПрдХ рд╕реНрд╡рд┐рдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЬреНрдЮрд╛рдд рдПрдирдо рдХреНрд▓реЙрдЬ рд╕реНрдерд┐рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

  4. рд╕реНрд╡рд┐рдлреНрдЯ рдЬреИрд╕реА рднрд╛рд╖рд╛ рдореЗрдВ _рдПрдХ рд╕рдВрдкреВрд░реНрдг рд╕реНрд╡рд┐рдЪ_ рдХреА рдзрд╛рд░рдгрд╛ рд╣реИред const s рдХреЗ рд╕реЗрдЯ рдХреЗ рд╡рд┐рд░реБрджреНрдз рджреЛрдиреЛрдВ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╣реИ рдФрд░ рдЙрд╕ рдЪреЗрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рддрд░реАрдХрд╛ рдмрдирд╛рдирд╛ рд╣реИред String() рдлрд╝рдВрдХреНрд╢рди, рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдврд╝рд┐рдпрд╛ рдорд╛рдорд▓рд╛ рд╣реИред

рдкреНрд░рд╕реНрддрд╛рд╡

package main

import (
    "context"
    "strconv"
    "fmt"
    "os"
)

// State is an enum of known system states.
type DeepThoughtState int

// One of known system states.
const (
    Unknown DeepThoughtState = iota
    Init
    Working
    Paused
    ShutDown
)

// String returns a human-readable description of the State.
//
// It switches over const State values and if called on
// variable of type State it will fall through to a default
// system representation of State as a string (string of integer
// will be just digits).
func (s DeepThoughtState) String() string {
    // NEW: Switch only over const values for State
    switch s.(const) {
    case Unknown:
        return fmt.Printf("%d - the state of the system is not yet known", Unknown)
    case Init:
        return fmt.Printf("%d - the system is initializing", Init)
    } // ERR: const switch must be exhaustive; add all cases or `default` clause

    // ERR: no return at the end of the function (switch is not exhaustive)
}

// RegisterState allows changing the state
func RegisterState(ctx context.Context, state string) (interface{}, error) {
    next, err := strconv.ParseInt(state, 10, 32)
    if err != nil {
        return nil, err
    }
    nextState := DeepThoughtState(next)

    fmt.Printf("RegisterState=%s\n", nextState) // naive logging

        // NEW: Check dynamically if variable is a known constant
    if st, ok := nextState.(const); ok {
        // TODO: Persist new state
        return st, nil
    } else {
        return nil, fmt.Errorf("unknown state %d, new state must be one of known integers", nextState)
    }
}

func main() {
    _, err := RegisterState(context.Background(), "42")
    if err != nil {
        fmt.Println("error", err)
        os.Exit(1)
    }
    os.Exit(0)
    return
}

рд╕реНрд╡рд┐рдлреНрдЯ рдПрдирдореНрд╕ рдореЗрдВ рдкреАрдПрд╕ рдПрд╕реЛрд╕рд┐рдПрдЯреЗрдб рд╡реИрд▓реНрдпреВ рдореЗрд░реА рдкрд╕рдВрджреАрджрд╛ рдиреМрдЯрдВрдХреА рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЧреЛ рдореЗрдВ рдЙрдирдХреЗ рд▓рд┐рдП рдХреЛрдИ рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдПрдирдо рдбреЗрдЯрд╛ рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдПрдХ рдореВрд▓реНрдп рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ - рджреЛрдиреЛрдВ рдХреЛ рд▓рдкреЗрдЯрдХрд░ рджреГрдврд╝рддрд╛ рд╕реЗ рдЯрд╛рдЗрдк рдХрд┐рдП рдЧрдП struct рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдХреБрдЫ рдорд╣реАрдиреЗ рдкрд╣рд▓реЗ рдореИрдВрдиреЗ рдПрдХ рд▓рд┐рдВрдЯрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реВрдл-рдСрдл-рдХреЙрдиреНрд╕реЗрдкреНрдЯ рд▓рд┐рдЦрд╛ рдерд╛ рдЬреЛ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ рдЧрдгрдирд╛ рдХрд┐рдП рдЧрдП рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдареАрдХ рд╕реЗ рд╕рдВрднрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИред https://github.com/loov/enumcheck

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рдЪреАрдЬреЛрдВ рдХреЛ рдЧрдгрдирд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:

type Letter byte // enumcheck

const (
    Alpha Letter = iota
    Beta
    Gamma
)

func Switch(x Letter) {
    switch x { // error: "missing cases Beta and Gamma"
    case Alpha:
        fmt.Println("alpha")
    case 4: // error: "implicit conversion of 4 to Letter"
        fmt.Println("beta")
    default: // error: "Letter shouldn't have a default case"
        fmt.Println("default")
    }
}

рдореИрдВ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдлрдВрд╕ рдЧрдпрд╛ рдХрд┐ рд╕рднреА рдирд┐рд╣рд┐рдд рд░реВрдкрд╛рдВрддрд░рдгреЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмреБрдирд┐рдпрд╛рджреА рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рд╢рд╛рд▓реАрдирддрд╛ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВ, рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдпрд╣ рдЕрднреА рднреА рдкреНрд░рдЧрддрд┐ рдкрд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЪреАрдЬреЗрдВ рдмрджрд▓ рд╕рдХрддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рдмрдЬрд╛рдп рдпрд╣ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рдПрдиреЛрдЯреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕реНрдЯрдм рдкреИрдХреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рд╕рдордп рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдВ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВред

Go1 рдореЗрдВ рдПрдирдо рдХрд╛ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд┐рд╕реА рднреА рднрд╛рд╖рд╛ рдореЗрдВ рдЕрдм рддрдХ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЬреАрдм рдПрдирдо рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдкрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕реА рднреА рдЙрдиреНрд╣реЗрдВ рдФрд░ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдЖрдИрдУрдЯрд╛ рдЪреАрдЬ рд╣реИрдХ рдХреА рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИред рдФрд░ рд╡реИрд╕реЗ рднреА рдЖрдИрдУрдЯрд╛ рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдореБрдЭреЗ рдЙрд╕ рдХреАрд╡рд░реНрдб рдХреЛ рдХреИрд╕реЗ рдпрд╛рдж рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП? рдЧреЛ рдХреЛ рд╕реАрдЦрдирд╛ рдЖрд╕рд╛рди рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд┐рд░реНрдл рд╡рд┐рдЪрд┐рддреНрд░ рд╣реИред

@pofl :
рдЬрдмрдХрд┐ рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдЧреЛ рдПрдирдо рдмрд╣реБрдд рдЕрдЬреАрдм рд╣реИрдВ, iota рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд┐рд░реНрдл рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЕрдВрдЧреНрд░реЗрдЬреА рд╢рдмреНрдж рд╣реИ:

рдпреЛрдЯрд╛
_рд╕рдВрдЬреНрдЮрд╛_

  1. рдмрд╣реБрдд рдХрдо рдорд╛рддреНрд░рд╛; рдЬреЛрдЯ; рд╕рдлреЗрдж
  2. рдЧреНрд░реАрдХ рд╡рд░реНрдгрдорд╛рд▓рд╛ рдХрд╛ рдиреМрд╡рд╛рдВ рдЕрдХреНрд╖рд░ (I, )ред
  3. рд╕реНрд╡рд░ рдзреНрд╡рдирд┐ рдЗрд╕ рдкрддреНрд░ рджреНрд╡рд╛рд░рд╛ рджрд░реНрд╢рд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред

рд╕рдВрднрд╡рддрдГ, рд╡реЗ рднрд╛рд╖рд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдПрдХ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдЬрд╛ рд░рд╣реЗ рдереЗред

рдпрд╣рд╛рдВ рдПрдХ рдкреБрд░рд╛рдиреА рдЯрд┐рдкреНрдкрдгреА рдХреЗ рдЬрд╡рд╛рдм рдореЗрдВ рдПрдХ рд╕рд╛рдЗрдб рдиреЛрдЯ рдкрд░:
рдЬрдмрдХрд┐ рдореИрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧреЛ рдореЗрдВ рднреЗрджрднрд╛рд╡ рд╡рд╛рд▓реА рдпреВрдирд┐рдпрдиреЛрдВ рдХреЛ рднреА рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛, рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЙрдиреНрд╣реЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдирдо рд╕реЗ рдЕрд▓рдЧ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рдЬреЗрдирд░рд┐рдХ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рд╣реИрдВ, рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдореЗрдВ рдЯрд╛рдЗрдк рд╕реВрдЪрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреЗрджрднрд╛рд╡ рд╡рд╛рд▓реЗ рдпреВрдирд┐рдпрдиреЛрдВ рдХреЗ рд╕рдорд╛рди рдХреБрдЫ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред #41716 рджреЗрдЦреЗрдВред

рдЧреЛ рдореЗрдВ iota рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢рд┐рдерд┐рд▓ рд░реВрдк рд╕реЗ рдПрдкреАрдПрд▓ рдореЗрдВ рдЗрд╕рдХреЗ рдЙрдкрдпреЛрдЧ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдЙрджреНрдзрд░рдг https://en.wikipedia.org/wiki/Iota :

рдХреБрдЫ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ (рдЬреИрд╕реЗ, A+, APL, C++[6], Go[7]), iota (рдпрд╛ рддреЛ рд▓реЛрдЕрд░рдХреЗрд╕ рдкреНрд░рддреАрдХ тН│ рдпрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ iota рдХреЗ рд░реВрдк рдореЗрдВ) рдХрд╛ рдЙрдкрдпреЛрдЧ рд▓рдЧрд╛рддрд╛рд░ рдкреВрд░реНрдгрд╛рдВрдХреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдФрд░ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдкреАрдПрд▓ рдореЗрдВ тН│4 1 2 3 4 рджреЗрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

enoodle picture enoodle  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

OneOfOne picture OneOfOne  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

stub42 picture stub42  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

go101 picture go101  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

michaelsafyan picture michaelsafyan  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ