Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Memetakan Susunan Objek dengan Cekap dalam Go?

Bagaimanakah Saya Boleh Memetakan Susunan Objek dengan Cekap dalam Go?

Linda Hamilton
Linda Hamiltonasal
2024-12-19 11:44:10513semak imbas

How Can I Efficiently Map an Array of Objects in Go?

Memetakan Tatasusunan Objek dalam Go

Dalam Node.js, anda boleh menggunakan fungsi peta untuk mengubah tatasusunan objek menjadi susunan nilai. Tertanya-tanya bagaimana untuk mencapai ini dalam Go dengan ringkas?

Go Solution: Map as a Top-Level Function

Tidak seperti kaedah dalam Go, fungsi peringkat atas boleh mengambil tambahan jenis hujah. Menggunakan ini, kita boleh mentakrifkan Peta sebagai fungsi generik:

func Map[T, U any](ts []T, f func(T) U) []U {
    us := make([]U, len(ts))
    for i := range ts {
        us[i] = f(ts[i])
    }
    return us
}

Kini, anda boleh menggunakan fungsi ini seperti berikut:

names := []string{"Alice", "Bob", "Carol"}
fmt.Println(Map(names, utf8.RuneCountInString)) // Output: [5 3 5]

Konteks Sejarah: Mengapa Peta Tiada dalam Standard Go Libraries

Sebelum Go 1.18, perbincangan meluas dalam Isu GitHub untuk cadangan golang.org/x/exp/slices mempertimbangkan untuk menambah fungsi Peta tetapi akhirnya memutuskan untuk menentangnya kerana kebimbangan tentang:

  • Kos operasi tersembunyi dalam satu baris
  • Pengendalian ralat tidak menentu dalam Peta
  • Menggalakkan gaya yang menyimpang daripada tradisional Go pendekatan

API Strim dianggap sebagai rumah masa depan yang berpotensi untuk fungsi sedemikian.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memetakan Susunan Objek dengan Cekap dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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