Perbezaan Antara Operator new() dan "&"
In Go, fungsi new() dan alamat memori "&" operator kedua-duanya digunakan untuk memperuntukkan memori. Walau bagaimanapun, terdapat beberapa perbezaan halus antara penggunaannya.
Perbandingan Kefungsian
Kedua-dua new() dan & operator mengembalikan penuding ke alamat memori yang baru diperuntukkan. Walau bagaimanapun, mereka berbeza dalam sintaksnya:
Analisis Jenis
Seperti yang ditunjukkan oleh contoh kod yang disediakan, refleksi analisis menunjukkan bahawa kedua-dua &Vektor{} dan baharu(Vektor) mengembalikan penunjuk jenis yang sama, kerana kedua-duanya adalah penunjuk kepada tika struct Vektor.
Kekeliruan Sejarah
Senarai mel Go sebelum ini telah membincangkan kebimbangan tentang mempunyai kedua-dua new() dan & untuk peruntukan memori, kerana ia boleh menyebabkan kekeliruan.
Kes Khas
Perlu diperhatikan new() ialah satu-satunya kaedah untuk mendapatkan penunjuk kepada jenis asas yang tidak dinamakan, seperti integer. Ini boleh dilihat dalam contoh berikut:
p := new(int) // valid p := &int{0} // invalid
Keutamaan dan Penggunaan
Akhirnya, pilihan antara menggunakan new() dan & untuk peruntukan memori sebahagian besarnya adalah perkara keutamaan peribadi. Kedua-dua kaedah mempunyai fungsi yang sama dan menghasilkan keputusan yang sama. Walau bagaimanapun, adalah penting untuk mengetahui perbezaan yang ketara antara kedua-dua pengendali dan menggunakannya dengan sewajarnya berdasarkan keperluan khusus.
Atas ialah kandungan terperinci Apakah Perbezaan Antara Fungsi 'new()' dan Operator Alamat Memori '&' dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!