Sobes.tech
Junior — Middle

Kuidas on implementeeritud vaikimisi väärtuste edastamine funktsioonide parameetrites Go keeles?

sobes.tech AI

Vastus AI-lt

Go keeles ei ole sisseehitatud tuge funktsioonide vaikeseadete parameetritele, nagu see on mõnes teises keeles (näiteks Python või C++). Sarnase käitumise rakendamiseks kasutatakse tavaliselt üht järgmistest lähenemistest:

  1. Funktsioonide ülekoormamine muutuvate parameetritega — edastada funktsioonile muutuv arv argumente ja kontrollida nende olemasolu sisemiselt:
func greet(name string, messages ...string) {
    msg := "Hello"
    if len(messages) > 0 {
        msg = messages[0]
    }
    fmt.Println(msg, name)
}

// Kutsed:
greet("Alice")           // Hello Alice
greet("Bob", "Hi")     // Hi Bob
  1. Seadistustega struktuuride kasutamine — edastada funktsioonile struktuur parameetritega, kus saab määrata vaikeseaded loomise ajal:
type Config struct {
    Timeout int
}

func doSomething(cfg Config) {
    if cfg.Timeout == 0 {
        cfg.Timeout = 30 // vaikeseadistus
    }
    // ...
}

// Kutsed:
doSomething(Config{})
  1. Abifunktsioonide (konstruktorite) loomine erinevate parameetrite komplektidega.

Nii rakendub Go keeles vaikeseadete väärtused funktsiooni sees olevate selgete loogikate või struktuuride kaudu, mitte keele süntaksi kaudu.