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>
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>
Mesej ralat menunjukkan bahawa tidak sah untuk memotong nilai pulangan sha1.Sum(). Perbezaan ini timbul kerana:
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>
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!