Gunakan fmt.scanf untuk membaca input diformat, sesuai untuk data berstruktur mudah, tetapi rentetan dipotong ketika menghadapi ruang; 2. Adalah disyorkan untuk menggunakan bufio.scanner untuk membaca garis demi baris, menyokong input berbilang baris, pengesanan EOF dan input saluran paip, dan boleh mengendalikan kesilapan pengimbasan; 3. Gunakan io.readall (os.stdin) untuk membaca semua input sekaligus, sesuai untuk memproses potongan besar data atau aliran fail; 4. Sambutan utama masa nyata memerlukan perpustakaan pihak ketiga seperti golang.org/x/term, dan Bufio mencukupi untuk senario konvensional; Cadangan Praktikal: Gunakan fmt.scan untuk input mudah interaktif, gunakan bufio.scanner untuk input baris atau saluran paip, gunakan io.readall untuk ketulan besar data, dan sentiasa mengendalikan kesilapan untuk mengelakkan kegagalan senyap.
Dalam GO, membaca data dari input standard ( stdin
) adalah keperluan biasa, seperti membaca input pengguna atau data saluran paip pemprosesan. Berikut adalah beberapa kaedah biasa dan praktikal yang menggabungkan gaya Go by Example
untuk menunjukkan cara membaca kandungan dari stdin
.

1. Baca input diformat menggunakan fmt.Scanf
Sesuai untuk membaca input berstruktur, seperti nombor tunggal atau rentetan.
Pakej utama Import "FMT" func main () { rentetan nama var var umur int fmt.print ("Masukkan Nama dan Umur:") fmt.scanf (" %s %d", & nama, & umur) fmt.printf ("hello %s, anda berumur d Tahun. \ n", nama, umur) }
?? Nota:
Scanf
akan berhenti membaca rentetan ketika menghadapi ruang, yang sesuai untuk senario mudah.
2. Gunakan bufio.Scanner
untuk membaca garis mengikut baris (disyorkan)
Ini adalah kaedah yang paling biasa digunakan, sesuai untuk membaca pelbagai baris input atau pemprosesan EOF
(seperti input saluran paip).
Pakej utama import ( "Bufio" "FMT" "OS" ) func main () { Pengimbas: = Bufio.NewScanner (OS.Stdin) fmt.println ("ENTER TEXT (CTRL D TO END):") untuk scanner.scan () { Talian: = scanner.text () jika garis == "keluar" { rehat } fmt.printf ("Anda masuk: %s \ n", baris) } jika err: = scanner.err (); err! = nil { fmt.fprintln (os.stderr, "Membaca input standard:", err) } }
? Kelebihan:
- Menyokong bacaan mengikut baris
- Sesuai dengan input terminal dan saluran paip (seperti
echo "hello" | go run main.go
)EOF
yang dapat dikesan (Ctrl D pada UNIX, Ctrl Z pada Windows)
3. Baca semua input sekaligus (sesuai untuk memproses fail atau potongan besar data)
Baca keseluruhan kandungan stdin
menggunakan io.ReadAll
.
Pakej utama import ( "FMT" "io" "OS" ) func main () { fmt.println ("Kandungan tampal (ctrl d hingga selesai):") data, err: = io.readall (os.stdin) jika err! = nil { fmt.fprintln (os.stderr, "Input membaca ralat:", err) Kembali } fmt.printf ("baca %d bytes: \ n %s", len (data), data) }
? Senario yang terpakai:
- Proses input lengkap JSON, fail konfigurasi, dll.
- Gunakan dengan saluran paip, seperti
cat data.txt | go run main.go
4. Baca watak tunggal atau input yang tidak buffer
Jika anda perlu bertindak balas terhadap kunci dalam masa nyata (seperti permainan atau alat interaktif), anda boleh menggunakan panggilan peringkat sistem, tetapi perpustakaan standard tidak menyokongnya secara langsung. Anda boleh menggunakan perpustakaan pihak ketiga seperti golang.org/x/term
.
Walau bagaimanapun, untuk bacaan stdin biasa, bufio
mencukupi.
Cadangan penggunaan praktikal
- Input interaktif : Gunakan
fmt.Scan
ataufmt.Scanf
untuk mendapatkan nilai mudah dengan cepat. - Input garis atau pemprosesan saluran paip : Gunakan
bufio.Scanner
terlebih dahulu. - Potongan besar data atau aliran fail : Gunakan
io.ReadAll(os.Stdin)
. - Ingatlah untuk berurusan dengan
scanner.Err()
danerror
untuk mengelakkan kegagalan senyap.
Pada dasarnya cara biasa ini. Perpustakaan standard Go adalah mudah dan cekap, dan dengan mudah boleh mengendalikan kebanyakan senario input dengan os.Stdin
.
Atas ialah kandungan terperinci Membaca dari Stdin dalam Contoh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

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

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

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

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

SetupaMaven/gradleprojectwithjax-rsdependencyiSejersey; 2.createarescresourceUsingAnnotationssuchas@pathand@get; 3.configuretheapplicationviaapplicationsubclassorweb.xml;

Maven adalah alat standard untuk pengurusan dan pembinaan projek Java. Jawapannya terletak pada hakikat bahawa ia menggunakan pom.xml untuk menyeragamkan struktur projek, pengurusan pergantungan, automasi kitaran hayat pembinaan dan sambungan pemalam; 1. Gunakan pom.xml untuk menentukan kumpulan, artifactid, versi dan kebergantungan; 2. Perintah teras utama seperti mvnclean, penyusun, ujian, pakej, memasang dan menggunakan; 3. Gunakan DependencyManagement dan Pengecualian untuk Menguruskan Versi Ketergantungan dan Konflik; 4. Mengatur aplikasi besar melalui struktur projek multi-modul dan diuruskan secara seragam oleh POM induk; 5.

Untuk menjana nilai hash menggunakan Java, ia boleh dilaksanakan melalui kelas MessageDigest. 1. Dapatkan contoh algoritma yang ditentukan, seperti MD5 atau SHA-256; 2. Panggil kaedah .Update () untuk lulus dalam data untuk disulitkan; 3. Panggil kaedah .digest () untuk mendapatkan pelbagai hash byte; 4. Tukar array byte ke dalam rentetan heksadesimal untuk membaca; Untuk input seperti fail besar, baca dalam ketulan dan panggilan .Update () beberapa kali; Adalah disyorkan untuk menggunakan SHA-256 dan bukannya MD5 atau SHA-1 untuk memastikan keselamatan.

Pertama, gunakan JavaScript untuk mendapatkan pilihan sistem pengguna dan tetapan tema yang disimpan di dalam negara, dan memulakan tema halaman; 1. Struktur HTML mengandungi butang untuk mencetuskan Topik Switching; 2. CSS menggunakan: Root untuk menentukan pembolehubah tema yang cerah, kelas mod-mode mentakrifkan pembolehubah tema gelap, dan menggunakan pembolehubah ini melalui VAR (); 3. JavaScript mengesan lebih suka skema-skema dan membaca LocalStorage untuk menentukan tema awal; 4. Tukar kelas mod gelap pada elemen HTML apabila mengklik butang, dan menjimatkan keadaan semasa ke LocalStorage; 5. Semua perubahan warna disertakan dengan animasi peralihan 0.3 saat untuk meningkatkan pengguna

Ya, menu drop-down CSS biasa boleh dilaksanakan melalui HTML dan CSS tulen tanpa JavaScript. 1. Gunakan UL dan Li bersarang untuk membina struktur menu; 2. Gunakan: Hover pseudo-Class untuk mengawal paparan dan menyembunyikan kandungan tarik-turun; 3. Tetapkan Kedudukan: Relatif untuk Ibu Bapa Li, dan submenu diletakkan menggunakan kedudukan: mutlak; 4. Submenu mungkir untuk memaparkan: Tiada, yang menjadi paparan: blok apabila melayang; 5. Multi-level pull-down boleh dicapai melalui bersarang, digabungkan dengan peralihan, dan menambah animasi pudar, dan disesuaikan dengan terminal mudah alih dengan pertanyaan media. Penyelesaian keseluruhannya mudah dan tidak memerlukan sokongan JavaScript, yang sesuai untuk besar

Fail Tetapan.JSON terletak di laluan peringkat pengguna atau ruang kerja dan digunakan untuk menyesuaikan tetapan vscode. 1. Laluan peringkat pengguna: Windows adalah C: \ Users \\ AppData \ Roaming \ code \ user \ settings.json, macOS adalah /users//library/applicationsupport/code/user/settings.json, linux adalah/ 2. Laluan Tahap Ruang Kerja: .VSCODE/Tetapan dalam Direktori Root Projek

Gunakan DateTime.StrpTime () untuk menukar rentetan tarikh ke dalam objek DateTime. 1. Penggunaan Asas: Parse "2023-10-05" sebagai objek DateTime melalui "%y-%m-%d"; 2. Menyokong pelbagai format seperti "%m/%d/%y" untuk menghuraikan tarikh Amerika, "%d/%m/%y" untuk menghuraikan tarikh British, "%b%d,%y%i:%m%p" untuk menghuraikan masa dengan am/pm; 3. Gunakan dateUtil.parser.parse () untuk secara automatik menyimpulkan format yang tidak diketahui; 4. Gunakan .D

Gunakan modul UUID untuk mendapatkan alamat MAC kad rangkaian pertama mesin di seluruh platform, tanpa memerlukan perpustakaan pihak ketiga, dan menukarnya menjadi format standard melalui uuid.getNode (); 2. Gunakan subprocess untuk memanggil arahan sistem seperti ipconfig atau ifconfig, dan menggabungkannya dengan pengekstrakan tetap semua alamat kad rangkaian MAC, yang sesuai untuk senario di mana banyak maklumat kad rangkaian perlu diperoleh; 3. Gunakan perpustakaan pihak ketiga getMac, hubungi get_mac_address () selepas pemasangan untuk mendapatkan MAC, yang menyokong pertanyaan melalui antara muka atau IP, tetapi memerlukan ketergantungan tambahan; Ringkasnya, jika tiada perpustakaan luaran diperlukan, kaedah UUID disyorkan. Jika anda perlu fleksibel mendapatkan maklumat kad pelbagai rangkaian, anda boleh menggunakan penyelesaian subprocess untuk membolehkan anda memasang getma ketergantungan.
