Kini dalam kod saya, saya mempunyai sekumpulan kerja berulang yang kelihatan seperti ini.
type fp = func(arg1 string, arg2 int, arg3 []string) bool func decorator(fp fp, arg1 string, arg2 int, arg3 []string) { // do some stuff prior to running fp res := fp(arg1, arg2, arg3) // do some other stuff depending on res }
Masalah saya ialah setiap kali saya ingin menambah jenis fp baharu dengan nombor/jenis parameter yang berbeza, saya perlu mentakrifkan semula kaedah ini, jadi saya akhirnya mentakrifkan semula penghias 4-5 kali dalam kod saya, dan mungkin perlu Do lebih. Saya mahu menggantikannya dengan penghias
type FP = func(a ...interface{}) bool func Decorator(fp FP, argDetails interface{}) { // do stuff res := fp(a) // do other stuff }
Dan biarkan fp menegaskan jenisnya. Tetapi saya tidak pasti sama ada ini menyebabkan masalah/adalah kes penggunaan yang buruk kerana saya telah banyak melihat tentang tidak menggunakan antara muka/menyebabkan masalah prestasi.
Jawapan betul
Generik tidak membantu atas sebab tertentu, terutamanya generik sahaja membantu dengan jenis, bukan nombor parameter. Secara peribadi, saya akan mendekati masalah ini dengan cara yang berbeza:
func decorator(fp func()) { // do stuff fp() // do other stuff }
Panggilnya menggunakan penutupan:
var res sometype decorator(func() { res = originalfunc(arg1, arg2, arg3) })
Ia agak bertele-tele di tapak panggilan, tetapi ia berfungsi sepenuhnya untuk sebarang tandatangan fungsi - sebarang nombor atau jenis parameter dan sebarang nombor atau jenis nilai pulangan. Ia juga berfungsi dengan panggilan kaedah. Nampaknya anda mungkin melakukan beberapa logik berdasarkan keputusan, jadi anda juga mungkin:
func Decorator(fp func() bool) { // do stuff res := fp() // do other stuff } var res someType Decorator(func() bool { res = originalFunc(arg1, arg2, arg3) return res })
Walaupun fungsi yang dihias mempunyai lebih banyak nilai pulangan daripada bool itu atau jika anda ingin menggunakan logik lain (contohnya, jika ia mengembalikan ralat, anda mahu menggunakan != 转换为 bool),它仍然可以工作。 nil
).
Atas ialah kandungan terperinci Adakah ini kes penggunaan yang sah untuk generik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Golang lebih sesuai untuk tugas -tugas kesesuaian yang tinggi, sementara Python mempunyai lebih banyak kelebihan dalam fleksibiliti. 1.Golang dengan cekap mengendalikan kesesuaian melalui goroutine dan saluran. 2. Pilihannya harus berdasarkan keperluan khusus.

Perbezaan prestasi antara Golang dan C terutamanya ditunjukkan dalam pengurusan ingatan, pengoptimuman kompilasi dan kecekapan runtime. 1) Mekanisme pengumpulan sampah Golang adalah mudah tetapi boleh menjejaskan prestasi, 2) Pengurusan memori manual C dan pengoptimuman pengkompil lebih cekap dalam pengkomputeran rekursif.

PilihgolangforhighperformanceandConcurrency, IdealForBackEndServicesandnetworkprogramming; SelectPythonForrapidDevelopment, datascience, danMachinelearningDuetoitSversativilityAndextiveLibraries.

Golang dan Python masing -masing mempunyai kelebihan mereka sendiri: Golang sesuai untuk prestasi tinggi dan pengaturcaraan serentak, sementara Python sesuai untuk sains data dan pembangunan web. Golang terkenal dengan model keserasiannya dan prestasi yang cekap, sementara Python terkenal dengan sintaks ringkas dan ekosistem perpustakaan yang kaya.

Dalam apa aspek Golang dan Python lebih mudah digunakan dan mempunyai lengkung pembelajaran yang lebih lancar? Golang lebih sesuai untuk kesesuaian tinggi dan keperluan prestasi tinggi, dan lengkung pembelajaran agak lembut untuk pemaju dengan latar belakang bahasa C. Python lebih sesuai untuk sains data dan prototaip cepat, dan lengkung pembelajaran sangat lancar untuk pemula.

Golang dan C masing-masing mempunyai kelebihan sendiri dalam pertandingan prestasi: 1) Golang sesuai untuk kesesuaian tinggi dan perkembangan pesat, dan 2) C menyediakan prestasi yang lebih tinggi dan kawalan halus. Pemilihan harus berdasarkan keperluan projek dan tumpukan teknologi pasukan.

Golang sesuai untuk pembangunan pesat dan pengaturcaraan serentak, manakala C lebih sesuai untuk projek yang memerlukan prestasi yang melampau dan kawalan asas. 1) Model Concurrency Golang memudahkan pengaturcaraan konvensyen melalui goroutine dan saluran. 2) Pengaturcaraan templat C menyediakan kod generik dan pengoptimuman prestasi. 3) Koleksi sampah Golang adalah mudah tetapi boleh menjejaskan prestasi. Pengurusan memori C adalah rumit tetapi kawalannya baik -baik saja.

Goimpactsdevelopmentpositivielythroughspeed, efficiency, andsimplicity.1) Speed: goCompilesquicklyandrunsefficiently, idealforlargeproject.2) Kecekapan: ITSComprehensivestandardlibraryraryrarexternaldependencies, enhingdevelyficiency.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

Penyesuai Pelayan SAP NetWeaver untuk Eclipse
Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft