Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Saya Tidak Boleh Menetapkan []bait kepada String dalam Go?

Mengapa Saya Tidak Boleh Menetapkan []bait kepada String dalam Go?

DDD
DDDasal
2024-10-27 01:57:30177semak imbas

Why Can't I Assign []byte to a String in Go?

Memahami Ralat Tugasan Byte: Tidak Dapat Menetapkan []bait ke Rentetan

Dalam percubaan anda untuk membaca fail dalam folder, anda mengalami ralat "tidak boleh memberikan []bait kepada z (jenis rentetan) dalam berbilang tugasan" apabila cuba membaca kandungan fail. Mari kita selidiki sebab di sebalik ralat ini.

Memahami Tugasan Berbilang

Apabila berbilang pembolehubah diberikan nilai dalam satu baris, seperti dalam kod anda:

<code class="go">z, err := ioutil.ReadFile(z)</code>

Setiap pembolehubah di sebelah kiri pengendali tugasan menerima nilai sepadan yang dikembalikan oleh fungsi. Dalam kes ini, fungsi ioutil.ReadFile mengembalikan dua nilai: []bait (data binari) dan ralat.

Menetapkan Bait kepada Rentetan

Bahagian yang bermasalah sedang mencuba untuk menetapkan []bait (data binari) yang dikembalikan daripada ioutil.ReadFile kepada pembolehubah z, yang diisytiharkan sebagai rentetan. Di sinilah ralat timbul kerana z menjangkakan nilai rentetan, bukan data binari.

Penyelesaian

Untuk menyelesaikan ralat ini, anda mempunyai dua pilihan:

  1. Tukar []bait kepada rentetan menggunakan fungsi string():
<code class="go">buf, err := ioutil.ReadFile(z)
if err != nil {
    log.Fatal(err)
}
z = string(buf)</code>
  1. Isytihar z sebagai []bait bukannya rentetan:
<code class="go">var z []byte
z, err := ioutil.ReadFile(z)</code>

Bekerja dengan Data Perduaan

Walaupun menukar data binari kepada rentetan adalah mungkin, selalunya lebih baik untuk bekerja secara langsung dengan data binari itu sendiri. Ini mengelakkan penukaran yang tidak perlu dan mengekalkan format asal data.

Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menetapkan []bait kepada String 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