Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Memetakan Tatasusunan Objek dalam Go?

Bagaimanakah Saya Boleh Memetakan Tatasusunan Objek dalam Go?

Linda Hamilton
Linda Hamiltonasal
2025-01-03 08:06:39777semak imbas

How Can I Map Arrays of Objects in Go?

Susunatur Pemetaan Objek dalam Go

Dalam Node.js, fungsi map() membenarkan anda mencipta tatasusunan baharu dengan mengubah setiap elemen tatasusunan asal. Dalam Go, tatasusunan tidak sefleksibel seperti kepingan dan tidak menyokong kaedah.

Walau bagaimanapun, anda boleh melaksanakan fungsi Peta generik yang boleh digunakan untuk mengubah tatasusunan objek kepada tatasusunan nilai yang diingini.

Peta Generik Fungsi

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
}

Penggunaan

fruits := []struct{ fruit string }{
    {fruit: "apple"},
    {fruit: "banana"},
    {fruit: "cherry"},
}

fruitNames := Map(fruits, func(fruit struct{ fruit string }) string { return fruit.fruit })

fmt.Println(fruitNames) // Outputs: [apple banana cherry]

Pertimbangan

Walaupun menggunakan fungsi Peta satu garis boleh menjadi mudah, adalah penting untuk mempertimbangkan batasannya:

  • Kos tersembunyi: Fungsi Peta memperuntukkan kepingan baharu dan melakukan lelaran O(n), jadi ia mungkin tidak selalu menjadi pilihan yang paling cekap.
  • Pengendalian ralat: Fungsi Peta tidak mengendalikan ralat yang mungkin berlaku semasa mengubah elemen. Jika ralat mungkin, gelung tersuai mungkin diperlukan.

Walaupun pertimbangan ini, fungsi Map boleh menyediakan penyelesaian yang ringan dan elegan untuk memetakan tatasusunan objek dalam Go.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memetakan Tatasusunan Objek 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