Sobes.tech
Junior — Middle

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

sobes.tech AI

Ҷавоб аз AI

В тили Go дар бораи параметрҳои функсия бо арзишҳои пешфарзӣ, ки дар баъзе забонҳои дигар (масалан, Python ё C++) мавҷуд аст, дастгирӣ нест. Барои татбиқ кардани чунин рафтор, одатан яке аз роҳҳои зерин истифода мешавад:

  1. Барои функсияҳо аз тариқи параметрҳои тағйирёбанда — ба функсия шумораи тағйирёбанда аргументҳоро дода ва дар дохили онҳояшонро санҷед:
func greet(name string, messages ...string) {
    msg := "Hello"
    if len(messages) > 0 {
        msg = messages[0]
    }
    fmt.Println(msg, name)
}

// Зангҳо:
greet("Alice")           // Hello Alice
greet("Bob", "Hi")     // Hi Bob
  1. Истифодаи структураҳо бо танзимот — ба функсия структура бо параметрҳоро дода ва арзишҳои пешфарзиро дар вақти эҷод муайян кунед:
type Config struct {
    Timeout int
}

func doSomething(cfg Config) {
    if cfg.Timeout == 0 {
        cfg.Timeout = 30 // арзиши пешфарзӣ
    }
    // ...
}

// Занг:
doSomething(Config{})
  1. Эҷоди функсияҳои ёрирасон (конструкторҳо) бо маҷмӯъҳои гуногуни параметрҳо.

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