Rumah > pembangunan bahagian belakang > Golang > Adakah Go Menyokong Argumen Fungsi Tanpa Nama?

Adakah Go Menyokong Argumen Fungsi Tanpa Nama?

Linda Hamilton
Lepaskan: 2024-12-31 22:47:10
asal
1009 orang telah melayarinya

Does Go Support Unnamed Function Arguments?

Adakah Argumen Tanpa Nama Suatu Perkara yang Diperjalankan?

Dalam Go, penggunaan argumen tanpa nama dalam definisi fungsi pada mulanya boleh menimbulkan persoalan, terutamanya apabila menemui kod yang mempunyai penunjuk kepada jenis yang tidak dinamakan sebagai argumen. Ini kerana argumen fungsi tidak mempunyai nama, menjadikannya nampaknya mustahil untuk dirujuk dalam fungsi.

Tujuan Argumen Tanpa Nama

Parameter yang tidak dinamakan dalam Go bukanlah perkara biasa . Menurut spesifikasi pengisytiharan Parameter, IdentifierList (nama atau nama pengecam) adalah pilihan, bermakna ia tidak wajib untuk parameter fungsi atau kaedah. Jenis ialah satu-satunya elemen penting.

Keperluan untuk parameter yang tidak dinamakan timbul apabila identiti parameter tidak berkaitan dengan kelakuan fungsi. Susunan dan jenis parameter adalah perkara yang penting, bukan nama mereka.

Mengapa Menggunakan Argumen Tanpa Nama?

Terdapat beberapa sebab mengapa seseorang mungkin memilih untuk menggunakan argumen tanpa nama :

  • Argumen Tidak Diperlukan: Dalam kes di mana parameter hadir untuk kesempurnaan atau untuk memenuhi antara muka atau keperluan tandatangan tetapi tidak digunakan dalam fungsi, ia boleh dibiarkan tanpa nama.
  • Keserasian Ke Hadapan: Keserasian ke hadapan adalah sebab lain. Perpustakaan boleh mengisytiharkan fungsi dengan parameter tambahan sambil meninggalkannya tanpa nama pada mulanya. Ini membenarkan penggunaan masa hadapan tanpa melanggar keserasian ke belakang.
  • Buang Nilai: Apabila fungsi menjangkakan jenis hujah tertentu tetapi nilainya tidak ada akibatnya, hujah boleh tidak dinamakan dan dibiarkan tidak digunakan .

Contoh:

Pertimbangkan antara muka dipanggil MyWriter yang mentakrifkan kaedah Tulis:

type MyWriter interface {
    Write(p []byte) error
}
Salin selepas log masuk

Untuk menyediakan pelaksanaan mudah antara muka ini yang membuang data, anda boleh mencipta DiscardWriter:

type DiscardWriter struct{}

func (DiscardWriter) Write([]byte) error { return nil }
Salin selepas log masuk

Dalam contoh ini, kedua-duanya penerima dan hujah tidak dinamakan kerana ia tidak digunakan.

Lain-lain Pertimbangan:

parameter tidak dinamakan. Anda mesti menamakan semua parameter jika anda memilih untuk menamakan mana-mana. Anda boleh menggunakan pengecam kosong dalam situasi seperti ini:

// Responds with "Hello" to all HTTP requests
http.HandleFunc("/", func(w http.ResponseWriter, _ *http.Request) {
    io.WriteString(w, "Hello")
})
Salin selepas log masuk

Sumber Tambahan:

  • [Mendapatkan nama parameter kaedah dalam Golang](https://stackoverflow.com/questions/26838313/getting-method-parameter-names-in-golang)
  • [Kembalikan peta seperti 'ok' di Golang secara normal functions](https://stackoverflow.com/questions/49873564/return-map-like-ok-in-golang-on-normal-functions)
  • [Mengapa kita mesti mengisytiharkan nama pembolehubah apabila menambah kaedah kepada struct in Golang?](https://stackoverflow.com/questions/33357684/why-must-we-declare-a-variable-name-when-adding-a-method-to-a-struct-in-golang)

Atas ialah kandungan terperinci Adakah Go Menyokong Argumen Fungsi Tanpa Nama?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan