Golang melaksanakan parameter lalai

PHPz
Lepaskan: 2023-05-10 13:42:07
asal
2672 orang telah melayarinya

Dalam banyak bahasa pengaturcaraan, fungsi parameter lalai disokong. Ia boleh menjadikan kod lebih ringkas, mengurangkan pertindihan kod berlebihan, dan meningkatkan kebolehbacaan dan kebolehselenggaraan kod. Dalam golang, walaupun tiada sokongan asli untuk parameter lalai, ia boleh disimulasikan melalui beberapa kaedah. Artikel ini akan meneroka cara melaksanakan fungsi parameter lalai dalam golang.

1. Gunakan struktur

Gunakan struktur untuk merealisasikan fungsi parameter lalai. Dalam golang, struktur ialah jenis data komposit yang boleh menggabungkan berbilang medan data dan boleh diberikan nilai awal. Struktur boleh dihantar ke dalam fungsi sebagai parameter formal untuk mensimulasikan kefungsian parameter lalai.

Kod sampel adalah seperti berikut:

type Options struct {
    Name    string
    Age     int
    Address string
}

func foo(opts Options) {
    if opts.Name == "" {
        opts.Name = "defaultName"
    }
    // ...
}

func main() {
    opts := Options{
        Name: "Tom",
        Age: 20,
    }
    foo(opts)
}
Salin selepas log masuk

Dalam contoh di atas, kami menggunakan struktur Options, yang mengandungi tiga medan: Name, Age dan Address. Dalam fungsi foo, kita boleh memutuskan sama ada hendak menggunakan nilai lalai dengan menilai sama ada opts.Name kosong. Dalam fungsi main, kami hanya menetapkan nilai dua medan Name dan Age, dan nilai lalai medan Address ialah rentetan kosong.

Dengan menggunakan struktur, kami boleh mensimulasikan fungsi parameter lalai dengan mudah. Walau bagaimanapun, kaedah ini memerlukan penentuan jenis struktur, yang meningkatkan kerumitan kod dan kesukaran penyelenggaraan.

2. Gunakan lebihan fungsi

Lebih muatan fungsi merujuk kepada mentakrifkan berbilang fungsi dengan nama yang sama dalam skop yang sama, tetapi dengan nombor dan jenis parameter yang berbeza. Dalam golang, walaupun lebihan fungsi tidak disokong, anda boleh mensimulasikan lebihan fungsi dengan menambahkan akhiran selepas nama fungsi. Anda boleh mentakrifkan berbilang fungsi dengan nama yang sama, setiap fungsi sepadan dengan parameter yang berbeza, untuk mencapai kesan simulasi parameter lalai.

Kod sampel adalah seperti berikut:

func Bar(name string) {
    fmt.Println(name)
}

func BarWithNameAndAge(name string, age int) {
    fmt.Printf("%s is %d years old
", name, age)
}

func main() {
    Bar("Tom")
    BarWithNameAndAge("Tom", 20)
}
Salin selepas log masuk

Dalam contoh di atas, kami menentukan dua fungsi Bar dan BarWithNameAndAge, kedua-duanya mempunyai nama fungsi yang sama tetapi senarai parameter yang berbeza. Apabila kita memanggil fungsi Bar, kita hanya perlu lulus dalam satu parameter name, dan nilai lalai age ialah 0; apabila kita memanggil fungsi BarWithNameAndAge, kita perlu lulus dalam dua parameter, iaitu name dan age. Dengan mentakrifkan berbilang fungsi untuk mensimulasikan beban lampau fungsi, kami juga boleh melaksanakan fungsi parameter lalai dengan mudah.

Perlu diingatkan bahawa kaedah ini boleh menyebabkan kekeliruan dalam nama fungsi dan kekeliruan semasa membuat panggilan, jadi ia perlu digunakan dengan berhati-hati.

3. Gunakan parameter pembolehubah

Parameter pembolehubah bermakna bilangan parameter fungsi tidak pasti dan boleh diproses secara dinamik seperti yang diperlukan dalam badan fungsi. Dalam golang, anda boleh menggunakan sintaks ... untuk mengisytiharkan parameter pembolehubah, yang boleh menerima sebarang bilangan parameter, dengan itu mensimulasikan fungsi parameter lalai.

Kod sampel adalah seperti berikut:

func Foo(args ...int) {
    if len(args) > 0 {
        // ...
    }
}

func main() {
    Foo()
    Foo(1)
    Foo(1, 2)
}
Salin selepas log masuk

Dalam contoh di atas, kami telah mentakrifkan fungsi Foo, yang menerima parameter pembolehubah args. Dalam badan fungsi, kita boleh menilai bilangan parameter yang diluluskan berdasarkan nilai len(args) untuk memutuskan sama ada untuk menggunakan parameter lalai. Apabila tiada parameter dimasukkan, args ialah kepingan kosong. Dengan menggunakan parameter pembolehubah, kita boleh mensimulasikan kefungsian parameter lalai dengan mudah.

Walau bagaimanapun, perlu diingatkan bahawa parameter pembolehubah hanya digunakan apabila jenis parameter adalah sama Jika anda perlu mengendalikan parameter jenis yang berbeza, anda perlu menggunakan kaedah lain.

4. Gunakan dalam kombinasi

Tiga kaedah di atas masing-masing mempunyai kelebihan dan kekurangannya sendiri, dan boleh digunakan dalam kombinasi antara satu sama lain dalam senario tertentu untuk mencapai hasil yang lebih baik.

Sebagai contoh, anda boleh menggunakan gabungan struktur dan lebihan fungsi untuk menentukan jenis pilihan biasa dan menggunakan lebihan fungsi yang berbeza untuk memproses jenis parameter yang berbeza. Kod sampel adalah seperti berikut:

type Options struct {
    Name    string
    Age     int
    Address string
}

type OptionFunc func(*Options)

func WithName(name string) OptionFunc {
    return func(opt *Options) {
        opt.Name = name
    }
}

func WithAge(age int) OptionFunc {
    return func(opt *Options) {
        opt.Age = age
    }
}

func WithAddress(address string) OptionFunc {
    return func(opt *Options) {
        opt.Address = address
    }
}

func NewOptions(opts ...OptionFunc) *Options {
    opt := &Options{}
    for _, o := range opts {
        o(opt)
    }
    return opt
}

func Foo(opts *Options) {
    if opts.Name == "" {
        opts.Name = "defaultName"
    }
    // ...
}

func main() {
    opts := NewOptions(WithName("Tom"), WithAge(20))
    Foo(opts)
}
Salin selepas log masuk

Dalam contoh di atas, kami mentakrifkan struktur Options, yang mengandungi tiga medan: Name, Age dan Address. Kami telah mentakrifkan tiga fungsi WithName, WithAge dan WithAddress, yang kesemuanya mengembalikan jenis fungsi OptionFunc, yang akan menetapkan pilihan yang sepadan. Kami juga mentakrifkan fungsi NewOptions yang menerima parameter pembolehubah OptionFunc, menetapkan pilihan Options dengan merentasi senarai parameter dan mengembalikan penunjuk kepada Options. Akhir sekali, fungsi Foo ditakrifkan, yang menerima parameter penunjuk jenis *Options dan menentukan sama ada untuk menggunakan nilai lalai dengan menilai sama ada opts.Name kosong. Dalam fungsi main, kami menggunakan fungsi NewOptions untuk menetapkan dua pilihan Name dan Age dan menyerahkannya ke fungsi Foo untuk diproses.

Dengan menggunakan gabungan struktur dan lebihan fungsi, kami boleh menetapkan pilihan dengan sangat mudah, dan kami boleh menambah pilihan baharu atau mengubah suai pilihan sedia ada mengikut keperluan.

Ringkasan

Artikel ini membincangkan tiga cara untuk melaksanakan parameter lalai dalam golang, iaitu menggunakan struktur, lebihan fungsi dan parameter berubah. Setiap kaedah ini mempunyai kelebihan dan kekurangan, dan anda boleh memilih mengikut keperluan anda dalam senario tertentu. Dalam pengaturcaraan sebenar, mereka boleh digabungkan mengikut keperluan untuk mencapai hasil yang lebih baik.

Atas ialah kandungan terperinci Golang melaksanakan parameter lalai. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan