Junior — Middle
Чӣ гуна интиқоли арзишҳои аргументҳоро ба функсия амалӣ кардан мумкин аст, агар параметрҳо дар вақти даъват ба таври возеҳ дода нашаванд?
sobes.tech AI
Ҷавоб аз AI
Дар гӯӣ, дар баъзе забонҳои дигар, дастгирии параметрҳои пешфарз вуҷуд надорад. Барои иҷрои интиқоли арзишҳои аргументҳо, вақте ки параметрҳо ба таври возеҳ дода нашудаанд, одатан як ё зиёда аз роҳҳои зерин истифода мешаванд:
- Истифодаи параметрҳои тағйирёбанда (
...) — имкон медиҳад, ки шумораи ҳархела аргументҳоро гузоред ва дар дохили функсия санҷед, ки оё онҳо гузошта шудаанд ва дар ҳолати зарурӣ арзишҳои пешфарзро муқаррар кунед.
func мисол(args ...int) {
var арзиш int
if len(args) > 0 {
арзиш = args[0]
} else {
арзиш = 42 // арзиши пешфарз
}
fmt.Println(арзиш)
}
- Пас додани структура бо танзимот — структура бо параметрҳо сохта мешавад ва агар майдонҳо пур нашуда бошанд, дар дохили функсия арзишҳои пешфарз муқаррар мешаванд.
type Config struct {
Param int
}
func мисол(cfg Config) {
if cfg.Param == 0 {
cfg.Param = 42 // арзиши пешфарз
}
fmt.Println(cfg.Param)
}
- Истифодаи ишорагарҳо ва санҷиши nil — агар параметр ҳамчун ишорагар гузошта шавад, мумкин аст, ки санҷед, ки оё он гузошта шудааст ва арзиши пешфарзро муқаррар кунед.
Ба ин тариқ, дар гӯӣ одатан рафтори параметрҳои пешфарз тавассути санҷишҳои иловагӣ дар дохили функсия амалӣ карда мешавад, зеро синтаксис барои параметрҳои пешфарз вуҷуд надорад.