Rumah > pembangunan bahagian belakang > Golang > Adakah Penukaran Jenis Alias ​​Go Mencipta Salinan?

Adakah Penukaran Jenis Alias ​​Go Mencipta Salinan?

DDD
Lepaskan: 2024-12-23 04:52:14
asal
781 orang telah melayarinya

Does Go's Alias Type Conversion Create Copies?

Adakah Penetapan Antara Alias ​​Mencetuskan Penyalinan dalam Go?

Go membenarkan takrifan jenis tersuai menggunakan alias. Kebimbangan timbul sama ada penukaran antara jenis alias ini menghasilkan salinan atau hanya perubahan struktur.

Pertimbangkan contoh ini:

type MyString string 
var s = "very long string"
var ms = MyString(s)
var s2 = string(s)

// Are ms or s2 a full copy of s?
Salin selepas log masuk

Jawapan:

Menurut peraturan penukaran Go, penukaran tidak tetap antara jenis angka atau rentetan mungkin dikenakan kos masa jalan kerana perubahan perwakilan. Walau bagaimanapun, semua penukaran lain, seperti antara alias, mengekalkan perwakilan asal tanpa membuat salinan.

Oleh itu, kedua-dua ms dan s2 bukanlah salinan penuh s tetapi merujuk kepada nilai asas yang sama .

Kesan pada Fungsi Panggilan:

Apabila menghantar nilai kepada fungsi, salinan biasanya dibuat. Walau bagaimanapun, ini tidak berlaku untuk jenis alias. Menetapkan nilai ditaip alias kepada parameter fungsi tidak mencetuskan penyalinan:

func foo(s MyString){
  ...
}
foo(ms) // No copy is made when passing ms to foo()
Salin selepas log masuk

Ringkasnya, sementara penukaran antara jenis alias tidak mencipta salinan nilai asas, prinsip ini tidak meluas kepada menghantar nilai kepada fungsi di mana salinan biasanya dibuat.

Atas ialah kandungan terperinci Adakah Penukaran Jenis Alias ​​Go Mencipta Salinan?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan