Apabila bekerja dengan fail, adalah perkara biasa untuk mengendalikan berbilang nilai pulangan, seperti kandungan fail dan sebarang kesilapan yang dihadapi semasa membaca. Dalam Go, ini boleh menyebabkan kekeliruan apabila cuba menukar kepingan bait yang mengandungi kandungan fail kepada rentetan.
Ralat "tidak boleh menetapkan []bait kepada z (rentetan jenis) dalam berbilang tugasan" berlaku apabila kod berikut digunakan:
files, _ := ioutil.ReadDir("documents/") for _, f := range files { z := "documents/" + f.Name() fmt.Println(z) // prints out 'documents/*doc name*' recursively z, err := ioutil.ReadFile(z) // This line throws up the error }
Isu di sini ialah ioutil.ReadFile mengembalikan kedua-dua kandungan fail sebagai kepingan bait []bait dan ralat ralat. Apabila cuba memberikan pulangan berbilang ini kepada pembolehubah tunggal, seperti z, yang merupakan rentetan jenis, pengkompil mengadu.
Untuk menyelesaikan masalah ini, terdapat dua pilihan :
Untuk menukar kepingan bait kepada rentetan, anda boleh menggunakan kod berikut:
buf, err := ioutil.ReadFile(z) if err != nil { log.Fatal(err) } z = string(buf)
Ini akan memperuntukkan kandungan fail kepada pembolehubah z sebagai rentetan. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa menukar data perduaan kepada rentetan boleh mengakibatkan kehilangan atau kerosakan data.
Dalam banyak kes, adalah lebih baik untuk bekerja secara langsung dengan kepingan bait berbanding daripada rentetan apabila memanipulasi data binari. Ini mengelakkan kemungkinan masalah yang berkaitan dengan penukaran dan membolehkan pemprosesan format binari yang lebih cekap.
Sebagai contoh, kod berikut akan berfungsi secara langsung dengan kepingan bait:
buf, err := ioutil.ReadFile(z) if err != nil { log.Fatal(err) } // Perform operations on buf
Pendekatan ini ialah lebih cekap dan meminimumkan risiko kehilangan data atau rasuah.
Atas ialah kandungan terperinci Cara Mengendalikan Berbilang Nilai Pulangan dalam Go: Menukar []bait kepada Rentetan Apabila Membaca Fail?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!