Mengapakah Saya Tidak Boleh Menghiris Nilai Pulangan Fungsi dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-10-24 18:19:02
asal
1062 orang telah melayarinya

Why Can't I Slice the Return Value of a Function in Go?

Kebolehubahsuaian dalam Pembolehubah dan Kelakuan Nilai Pulangan Fungsi

Dalam pengaturcaraan, adalah penting untuk memahami perbezaan tingkah laku antara pembolehubah dan nilai pulangan fungsi. Pertimbangkan coretan kod berikut:

<code class="go">hash := sha1.Sum([]byte(uf.Pwd))
u.Pwhash = hex.EncodeToString(hash[:])</code>
Salin selepas log masuk
Salin selepas log masuk

Kod ini berfungsi seperti yang dimaksudkan, dengan pembolehubah cincang menyimpan cincang SHA1 tatasusunan bait dan pembolehubah u.Pwhash memegang perwakilan perenambelasan bagi cincang itu.

Walau bagaimanapun, jika kami cuba menggabungkan dua baris ini menjadi satu, kami menghadapi ralat:

<code class="go">u.Pwhash = hex.EncodeToString(sha1.Sum([]byte(uf.Pwd))[:])</code>
Salin selepas log masuk

Mesej ralat menunjukkan bahawa tidak sah untuk memotong nilai pulangan sha1.Sum(). Perbezaan ini timbul kerana:

  • Pembolehubah: Pembolehubah seperti cincang boleh dialamatkan, bermakna ia mewakili lokasi dalam memori di mana data boleh disimpan dan diambil semula.
  • Nilai Pulangan Fungsi: Tidak seperti pembolehubah, nilai pulangan panggilan fungsi (seperti sha1.Sum()) tidak boleh ditangani. Ia adalah nilai sementara yang dicipta dan dimusnahkan semasa pelaksanaan fungsi.

Dalam coretan kedua, kami cuba menghiris sha1.Sum()[:], yang tidak dibenarkan kerana nilai pulangan sha1.Sum () tidak boleh ditangani. Operasi hirisan memerlukan operannya boleh dialamatkan.

Oleh itu, untuk menggabungkan baris dengan betul, kita perlu menyimpan nilai pulangan sha1.Sum() terlebih dahulu dalam pembolehubah boleh dialamatkan seperti cincang sebelum menghirisnya:

<code class="go">hash := sha1.Sum([]byte(uf.Pwd))
u.Pwhash = hex.EncodeToString(hash[:])</code>
Salin selepas log masuk
Salin selepas log masuk

Memahami kebolehalamatan dan tingkah laku pembolehubah dan nilai pulangan fungsi adalah penting untuk menulis kod Go yang betul dan cekap.

Atas ialah kandungan terperinci Mengapakah Saya Tidak Boleh Menghiris Nilai Pulangan Fungsi dalam Go?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan