Sobes.tech
Junior — Middle

Чӣ гуна интиқоли арзишҳои аргументҳоро ба функсия амалӣ кардан мумкин аст, агар параметрҳо дар вақти даъват ба таври возеҳ дода нашаванд?

sobes.tech AI

Ҷавоб аз AI

Дар гӯӣ, дар баъзе забонҳои дигар, дастгирии параметрҳои пешфарз вуҷуд надорад. Барои иҷрои интиқоли арзишҳои аргументҳо, вақте ки параметрҳо ба таври возеҳ дода нашудаанд, одатан як ё зиёда аз роҳҳои зерин истифода мешаванд:

  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 — агар параметр ҳамчун ишорагар гузошта шавад, мумкин аст, ки санҷед, ки оё он гузошта шудааст ва арзиши пешфарзро муқаррар кунед.

Ба ин тариқ, дар гӯӣ одатан рафтори параметрҳои пешфарз тавассути санҷишҳои иловагӣ дар дохили функсия амалӣ карда мешавад, зеро синтаксис барои параметрҳои пешфарз вуҷуд надорад.