Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menetapkan Penunjuk Int dengan Selamat kepada Nilai Int dalam Go?

Bagaimana untuk Menetapkan Penunjuk Int dengan Selamat kepada Nilai Int dalam Go?

Patricia Arquette
Patricia Arquetteasal
2024-12-08 12:15:11577semak imbas

How to Safely Set an Int Pointer to an Int Value in Go?

Menetapkan Penunjuk Int kepada Nilai Int dalam Go

Dalam Go, penunjuk ialah pembolehubah yang menyimpan alamat pembolehubah lain. Ia membenarkan anda mengakses nilai pembolehubah yang dirujuk secara tidak langsung dengan menyahrujuknya menggunakan operator *.

Walau bagaimanapun, apabila menggunakan penunjuk, anda mungkin menghadapi masalah jika anda cuba menyahrujuk penuding sifar. Ini kerana penunjuk sifar tidak ditetapkan untuk menunjuk ke mana-mana lokasi memori yang sah.

Pertimbangkan kod berikut:

package main

import (
    "fmt"
    "reflect"
)

func main() {
    var guess *int
    fmt.Println(reflect.TypeOf(guess))
    *guess = 12345
    fmt.Println(guess)
}

Kod ini cuba menetapkan nilai *penunjuk teka ke 12345. Walau bagaimanapun, ini akan mengakibatkan panik masa jalan kerana alamat memori yang tidak sah atau penyahrujukan sifar.

The sebab ralat ini ialah penunjuk tekaan adalah sifar secara lalai. Apabila anda cuba menyahrujuk penuding sifar, atur cara akan ranap.

Untuk menyelesaikan isu ini, anda perlu menetapkan penuding ke lokasi memori yang sah dahulu. Anda boleh menggunakan fungsi new() terbina untuk mencipta pembolehubah int baharu dan menetapkan alamatnya kepada penunjuk tekaan:

var guess *int
guess = new(int)
*guess = 12345

Sekarang, penunjuk tekaan menghala ke pembolehubah int yang sah, dan anda boleh membatalkan rujukan dengan selamat ia untuk menetapkan atau mendapatkan nilainya.

Cara lain untuk menetapkan nilai pada penunjuk adalah dengan menggunakan operator & untuk mendapatkan alamat yang sedia ada pembolehubah:

value := 12345
guess := &value

Di sini, penunjuk tekaan kini menunjuk kepada pembolehubah nilai. Sebarang perubahan yang dibuat pada nilai yang ditunjuk melalui penunjuk tekaan juga akan mempengaruhi pembolehubah nilai asal.

Dengan memahami konsep penunjuk nil dan cara untuk menetapkannya ke lokasi memori yang sah, anda boleh menggunakan penunjuk dalam Go anda dengan berkesan. atur cara untuk mengakses dan memanipulasi data secara tidak langsung.

Atas ialah kandungan terperinci Bagaimana untuk Menetapkan Penunjuk Int dengan Selamat kepada Nilai Int 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