


Bagaimana untuk membaca fail dalam bahasa Go? Analisis ringkas pelbagai kaedah
Artikel ini akan membincangkan cara membaca fail di Golang. Kami akan menggunakan pakej berikut untuk memproses fail ini. Pakej
- os menyediakan antara muka bebas platform untuk melaksanakan operasi peringkat operasi. Pakej
- IOutil menyediakan fungsi utiliti yang mudah digunakan untuk bekerja dengan fail tanpa mengetahui banyak tentang pelaksanaan dalaman. Pakej
- bufio melaksanakan IO penimbal, yang membantu kami meningkatkan prestasi dan pemprosesan operasi input dan output. Pakej
-
log melaksanakan pakej pengelogan mudah. Kami akan menggunakan ini sepanjang program. Kami akan menggunakan fungsi
Fatal()
pakej pengelogan dalam program kami.
Bacaan Seluruh Fail
Kami boleh membaca keseluruhan fail dengan mudah sekali gus dan menyimpannya dalam pembolehubah. Tetapi ingat, kita tidak sepatutnya melakukan ini dengan fail besar. Kami akan menggunakan fungsi ioutil.ReadFile()
untuk membaca fail dan menyimpan kandungan fail dalam pembolehubah.
Pertama, mari kita simpan fail dalam direktori yang sama dengan program kami. Oleh itu, struktur folder kami akan kelihatan seperti ini.
___ | |_ _ _ _ ilovego.txt | |_ _ _ _ main.go
Kami menulis perkara berikut dalam fungsi main.go
:
package main import ( "fmt" "io/ioutil" "log" ) func main() { content, err := ioutil.ReadFile("ilovego.txt") if err != nil { log.Fatal(err) } fmt.Println(string(content)) }
Tetapi pertama, mari kita bincangkan kes fungsi ReadFile()
:
- Definisi: Fungsi pengisytiharan kaedah
ReadFile(filename string) ([]byte, error)
- Fungsi: Baca fail yang laluannya dihantar ke parameter fungsi dan kembalikan kandungan fail. Digunakan secara dalaman oleh kaedah
os.ReadFile(fileName)
- mengembalikan: kandungan fail dan ralat dalam tatasusunan bait. Panggilan yang berjaya akan kembali err == nil
Fungsi ReadFile dalaman dilaksanakan seperti berikut:
func ReadFile(filename string) ([]byte, error) { return os.ReadFile(filename) }
Sekarang, mari kita kembali ke program kami:
-
ioutil.ReadFile("readthisfile.txt")
Mengembalikan byteArray dan ralat. Kami menyimpan byteArray dalam pembolehubah "content " dan ralat dalam pembolehubah " err ". - Kemudian kita letakkan syarat if dan jika nilai err bukan nol, kita akan print error err menggunakan fungsi
log.Fatal()
. Ingat, fungsiFatal()
adalah bersamaan dengan fungsiPrint()
, yang kemudiannya memanggilos.Exit(1)
. - Akhir sekali, kami akan mencetak kandungan fail menggunakan fungsi
fmt.Println()
. Kita tidak boleh hanya mencetak pembolehubahcontent
kerana ia adalah tatasusunan bait, kita perlu menukarnya kepada rentetan:string(content)
Kemudian buat fail ilovego.txt
baharu dan tuliskannya seperti berikut Kandungan:
I Love Golang, This is One of the Best Languages on the World!
Akhir sekali, laksanakan kod di atas dan anda boleh melihat output berikut:
$ go run main.go I Love Golang, This is One of the Best Languages on the World!
Baca baris demi baris
Imbasan pengimbas Pengkompil menyediakan antara muka yang mudah untuk membaca data, seperti fail yang terdiri daripada baris teks yang dibatasi baris baharu. Ia membaca data melalui tag; fungsi Split
mentakrifkan tag. Secara lalai, fungsi ini memecahkan data ke dalam baris dan menjalurkan penghujung baris.
package main import ( "fmt" // "io/ioutil" "bufio" "log" "os" ) func main() { // opening the file using Open function f, err := os.Open("ilovego.txt") if err != nil { log.Fatal(err) } defer f.Close() // create a scanner for the file scanner := bufio.NewScanner(f) // loop through the scanner until it return fasle for scanner.Scan() { fmt.Println(scanner.Text()) } if err := scanner.Err(); err != nil { log.Fatal(err) } }
-
os.Open()
Buka fail yang diluluskan dalam parameter. Jika sebarang ralat ditemui semasa membuka fail, ia akan mengembalikan ralat yang sama. Jika tidak, ralat akan menjadi sifar. - Kami kemudian menggunakan pengimbas untuk membaca fail dan mengimbas baris demi baris sehingga akhir kandungan fail.
- Akhir sekali, kami mahu menutup fail.
Laksanakan program dan hasilnya adalah seperti berikut:
Baca perkataan demi perkataan
Kita juga boleh lulus Baca fail perkataan demi perkataan:
package main import ( "bufio" "fmt" "os" ) func main() { f, err := os.Open("ilovego.txt") if err != nil { fmt.Println(err) } defer f.Close() scanner := bufio.NewScanner(f) scanner.Split(bufio.ScanWords) for scanner.Scan() { fmt.Println(scanner.Text()) } if err := scanner.Err(); err != nil { fmt.Println(err) } }
Jalankan kod:
$ go run main.go I Love Golang, This is One of the Best Languages on the World!
Baca fail dalam ketulan
Satu masa Membaca keseluruhan fail kelihatan seperti cara yang mudah, tetapi kadangkala kita perlu membuat program kami beberapa pengoptimuman dari perspektif pengurusan memori. Golang menyediakan cara untuk membaca fail dalam ketulan dan bukannya membacanya secara keseluruhan atau malah baris demi baris. Kerana jika saiz baris terlalu besar, membaca baris demi baris juga mungkin tidak cekap. Pakej
package main import ( "bufio" "fmt" "io" "log" "os" ) func main() { f, err := os.Open("ilovego.txt") if err != nil { log.Fatal(err) } defer f.Close() reader := bufio.NewReader(f) buf := make([]byte, 16) for { // reading a file upto buffer n, err := reader.Read(buf) if err != nil { if err != io.EOF { log.Fatal(err) } break } fmt.Print(string(buf[0:n])) } fmt.Println() }
Bacaan binari
hex
melaksanakan pengekodan dan penyahkodan heksadesimal.
package main import ( "bufio" "encoding/hex" "fmt" "io" "log" "os" ) func main() { f, err := os.Open("sid.jpg") if err != nil { log.Fatal(err) } defer f.Close() reader := bufio.NewReader(f) buf := make([]byte, 256) for { _, err := reader.Read(buf) if err != nil { if err != io.EOF { fmt.Println(err) } break } fmt.Printf("%s", hex.Dump(buf)) } }
总结
本文介绍了 Go 语言读取文件的几种方式,ioutil.ReadFile
函数将整个文件读成一个字符串。这个函数很方便,但不应该用于非常大的文件。希望能对你有所帮助!
推荐学习:Golang教程
Atas ialah kandungan terperinci Bagaimana untuk membaca fail dalam bahasa Go? Analisis ringkas pelbagai kaedah. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Interfacesandpolymorphismingoenhancecodereusabilityandmaintainability.1) DefineInterfacesatTheRightAbstractionLevel.2) UseInterfacesforddendencyInjection.3) ProfileCodeTanageperperformanceImpacts.

TheinitfunctioningorunsautomaticallybeforethemainfunctiontoinitialializePackagesandsetuptheenvironment.it'susforforsettingupglobalvariables, sumber, danperformingone-timesetuptasksacrossanypackage

Kombinasi antara muka membina abstraksi kompleks dalam pengaturcaraan GO dengan memecahkan fungsi ke dalam antara muka kecil yang terfokus. 1) Tentukan pembaca, penulis dan antara muka yang lebih dekat. 2) Buat jenis kompleks seperti fail dan rangkaian dengan menggabungkan antara muka ini. 3) Gunakan fungsi ProcessData untuk menunjukkan cara mengendalikan antara muka gabungan ini. Pendekatan ini meningkatkan fleksibiliti kod, kesesuaian, dan kebolehgunaan semula, tetapi penjagaan harus diambil untuk mengelakkan pemecahan yang berlebihan dan kerumitan gabungan.

InitfunctionsingoareautomaticallycalledbeforethemainfunctionAntareusforsetupbutcomewithchallenges.1) ExecutionOrder: MultipleInitFunctionsRunindefinitionorder, whycancauseSifeDeydependoneachother.2)

Artikel membincangkan melewati peta di GO, memberi tumpuan kepada amalan selamat, memodifikasi penyertaan, dan pertimbangan prestasi untuk peta besar. Masalah: Memastikan lelaran peta yang selamat dan cekap di GO, terutamanya dalam persekitaran serentak dan dengan L

Artikel ini membincangkan membuat dan memanipulasi peta di GO, termasuk kaedah permulaan dan menambah/mengemas kini elemen.

Artikel ini membincangkan perbezaan antara tatasusunan dan kepingan dalam GO, memberi tumpuan kepada saiz, peruntukan memori, lulus fungsi, dan senario penggunaan. Array adalah saiz tetap, diperuntukkan stack, manakala kepingan adalah dinamik, sering ditumpukan, dan lebih fleksibel.

Artikel ini membincangkan membuat dan memulakan irisan di GO, termasuk menggunakan literals, fungsi membuat, dan mengiris tatasusunan atau kepingan yang ada. Ia juga meliputi sintaks kepingan dan menentukan panjang dan kapasiti kepingan.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Dreamweaver Mac版
Alat pembangunan web visual

mPDF
mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

SublimeText3 Linux versi baharu
SublimeText3 Linux versi terkini

Muat turun versi mac editor Atom
Editor sumber terbuka yang paling popular

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).
