Sobes.tech
Junior — Middle

როგორ განვახორციელოთ არგუმენტების მნიშვნელობების გადაცემა ფუნქციას, თუ პარამეტრები პირდაპირი გამოძახებისას არ იქნა გადაცემული?

sobes.tech AI

პასუხი AI-სგან

გო ენაში, ზოგ სხვა ენების მსგავსად, დეფოლტული პარამეტრების მხარდაჭერა არ არსებობს. Argumentების მნიშვნელობების გადაცემის განხორციელებისთვის, თუ პარამეტრები აშკარად არ გადაეცათ, ჩვეულებრივ გამოიყენება ერთ-ერთი შემდეგი მიდგომა:

  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 ენაში, ჩვეულებრივ, დეფოლტული პარამეტრების ქცევა დამატებითი შემოწმებებით ხორციელდება, რადგან სინტაქსი ამისთვის არ არსებობს.