Rumah >pembangunan bahagian belakang >Golang >Penunjuk Pergi: Bila hendak menggunakan `&` (Alamat) lwn. `*` (Penyahrujukan) dalam Fungsi?

Penunjuk Pergi: Bila hendak menggunakan `&` (Alamat) lwn. `*` (Penyahrujukan) dalam Fungsi?

Susan Sarandon
Susan Sarandonasal
2024-12-08 13:58:10172semak imbas

Go Pointers: When to Use `&` (Address Of) vs. `*` (Dereference) in Functions?

Memahami Penggunaan & dan * Penunjuk dalam Fungsi Go

Dalam pembangunan Go, kadangkala perlu menghantar pembolehubah sebagai argumen kepada fungsi. Walau bagaimanapun, senario tertentu mungkin mencetuskan ralat pengkompil. Ini boleh diselesaikan dengan menggunakan sama ada & (alamat) atau * (dereference) petunjuk. Memahami perbezaan antara mereka adalah penting.

Perbezaan antara & dan * Penunjuk

Pengendali & mengembalikan alamat pembolehubah, manakala pengendali * menafikan penunjuk, menunjuk kepada data yang dirujuk alamat.

Penggunaan

  • & (Alamat): Digunakan apabila anda ingin menghantar lokasi memori pembolehubah (nya penunjuk) sebagai hujah. Ini adalah perkara biasa apabila fungsi menjangka untuk beroperasi secara langsung pada data dan berpotensi mengubah suainya.
  • * (Dereference): Digunakan apabila anda ingin mengakses data yang disimpan pada alamat yang ditunjukkan oleh pembolehubah penunjuk. Ini membolehkan anda memanipulasi data sebenar, bukannya lokasi memorinya.

Contoh

Mari kita pertimbangkan kod berikut:

func SendNotification(rw http.ResponseWriter, req *http.Request, p httprouter.Params) {

    decoder := json.NewDecoder(req.Body)

    var u User

    if err := decoder.Decode(&u); err != nil {
        http.Error(rw, "could not decode request", http.StatusBadRequest)
        return
    }
}

Dalam contoh ini, kami menggunakan fungsi Nyahkod daripada pakej json. Fungsi ini mengharapkan penunjuk kepada struct Pengguna sebagai hujah. Tanpa operator &, pengkompil akan menimbulkan ralat.

Kesimpulan

Memahami perbezaan antara & dan * penunjuk adalah penting untuk pengaturcaraan Go yang berkesan. Dengan menerapkannya dengan betul, pembangun boleh menyelesaikan ralat pengkompil dan berfungsi dengan cekap dengan pembolehubah sebagai argumen dalam fungsi, membolehkan manipulasi data dan komunikasi dalam aplikasi Go.

Atas ialah kandungan terperinci Penunjuk Pergi: Bila hendak menggunakan `&` (Alamat) lwn. `*` (Penyahrujukan) dalam Fungsi?. 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