Sobes.tech
Junior — Middle

Эмне үчүн аргументтердин маанилерин функцияга өткөрүүдө, эгер параметрлер чакырууда ачык берилбесе?

sobes.tech AI

AIден жооп

Go тилинде, кээ бир башка тилдердегидей, алдын ала белгиленген параметрлер үчүн колдоо жок. Эгер аргументтердин маанилерин өткөрүү керек болсо, жана параметрлер ачык түрдө берилбесе, анда адатта төмөнкү ыкмалардын бирин колдонушат:

  1. Өзгөрмө параметрлер (...) колдонуу — ар кандай сандык аргументтерди өткөрүүгө мүмкүндүк берет жана функциянын ичинде алардын өткөрүлгөнүн текшерип, керек болсо алдын ала белгиленген маанилерди коюуга болот.
func мисал(args ...int) {
    var маанилүү int
    if len(args) > 0 {
        маанилүү = args[0]
    } else {
        маанилүү = 42 // алдын ала белгиленген мааниси
    }
    fmt.Println(маанилүү)
}
  1. Конфигуралар менен структураны өткөрүү — параметрлери бар структура түзүлөт, жана эгер талаалар толтурулбаган болсо, функциянын ичинде алдын ала белгиленген маанилер коюлат.
type Config struct {
    Param int
}

func мисал(cfg Config) {
    if cfg.Param == 0 {
        cfg.Param = 42 // алдын ала белгиленген мааниси
    }
    fmt.Println(cfg.Param)
}
  1. Белгилөөчү жана nil текшерүү — эгер параметр белгилөөчү катары берилсе, ал берилгенби же жокпу текшерилип, алдын ала белгиленген мааниге коюлат.

Ошентип, Go тилинде, адатта, алдын ала белгиленген параметрлердин жүрүм-турумун кошумча текшерүүлөр аркылуу ишке ашырат, анткени синтаксисинде алдын ала белгиленген параметрлер үчүн мүмкүнчүлүк жок.