Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah saya boleh mengubah suai medan struktur dengan betul dalam peta go?

Bagaimanakah saya boleh mengubah suai medan struktur dengan betul dalam peta go?

Barbara Streisand
Lepaskan: 2024-12-25 01:07:14
asal
997 orang telah melayarinya

How Can I Correctly Modify Struct Fields Within a Go Map?

Mengubah suai secara langsung Medan dalam Peta Struktur dalam Go

Dalam Go, peta int to struct membolehkan anda mengakses nilai struct dengan menggunakan kunci. Walau bagaimanapun, mengubah suai secara langsung medan dalam nilai struct boleh mengakibatkan tingkah laku yang tidak dijangka.

Sebab untuk Arah

Apabila anda mengakses nilai struct daripada peta, anda sebenarnya mengakses salinan struct. Mengubah suai salinan ini tidak mengubah suai struktur asal dalam peta. Untuk menukar struct asal, anda perlu membacanya, mengubah suainya dan kemudian menulisnya semula pada peta.

Ini kerana Go menyimpan nilai struct dalam lokasi memori yang berasingan apabila ia ditetapkan pada peta . Mengubah suai salinan tidak menjejaskan nilai asal.

Kos Tersembunyi Tersirat

Tiada kos tersembunyi tersirat dalam mengubah suai medan struct dalam struktur data lain seperti kepingan atau peta . Tingkah laku adalah sama seperti dalam kes peta int kepada struct, di mana pengubahsuaian kepada salinan struct tidak menjejaskan asal.

Penggunaan Penunjuk

Anda boleh menggunakan penunjuk untuk mengubah suai nilai struktur asal yang ada. Dengan menyimpan penuding pada struct dan bukannya struct itu sendiri dalam peta, anda boleh terus mengakses dan mengubah suai medan struct asal.

Contoh:

import "fmt"

type dummy struct {
    a int
}

func main() {
    x := make(map[int]*dummy)
    x[1] = &dummy{a: 1}
    x[1].a = 2
    fmt.Println(x[1].a) // Output: 2
}
Salin selepas log masuk

Dalam contoh ini, kami mengakses nilai struct menggunakan penuding, membolehkan kami mengubah suai medannya secara langsung.

Atas ialah kandungan terperinci Bagaimanakah saya boleh mengubah suai medan struktur dengan betul dalam peta go?. 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