Rumah >pembangunan bahagian belakang >Golang >Penunjuk Pergi: Bila hendak menggunakan `&` dan `*`?
Pemahaman Penunjuk (& dan *)
Go selalunya memerlukan pemindahan pembolehubah sebagai argumen kepada fungsi. Walau bagaimanapun, ia boleh mengelirukan apabila menghadapi ralat semasa operasi sedemikian. Artikel ini menjelaskan perbezaan antara & dan * penunjuk, menerangkan bila setiap satu harus digunakan.
Penunjuk dan Alamat
Penunjuk ialah pembolehubah yang menyimpan alamat pembolehubah lain dalam ingatan. Operator & mendapatkan semula alamat pembolehubah. Contohnya, jika 'u' ialah struct Pengguna, '&u' mengembalikan alamat 'u'.
Menyahkod JSON dengan &
Untuk memahami & operator , pertimbangkan kod berikut:
var u User if err := decoder.Decode(&u); err != nil { // Code to handle error... }
Fungsi json.Decode mengharapkan penuding untuk menyahkod data JSON ke dalamnya. Dalam contoh ini, 'u' hanyalah struct Pengguna, bukan penunjuk. Dengan menggunakan '&u', kami menyediakan fungsi dengan alamat 'u', membolehkan penyahkodan berjaya.
Petunjuk dan Pengalihan
Pengendali boleh dianggap sebagai "pengalihan semula" kepada nilai yang disimpan pada alamat penuding. Sebagai contoh, jika penunjuk 'x' menyimpan alamat 'y', 'x' memberi kita nilai 'y'.
Pertimbangkan kod berikut:
x := new(User) // Creates a pointer to a User struct *x = y // Assigns the value of 'y' to the struct pointed to by 'x' fmt.Println(*x) // Prints the value of 'y'
Ringkasan Penggunaan
Atas ialah kandungan terperinci Penunjuk Pergi: Bila hendak menggunakan `&` dan `*`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!