Working with Standard Streams
Standart oqimlar bilan ishlash
Har bir CLI dasturda uchta "standart oqim" mavjud: stdin (kiruvchi ma'lumot, odatda klaviaturadan), stdout (oddiy natija) va stderr (xato xabarlari). Bu uchtasini ajratib bilish — professional CLI dastur yozishning kaliti.
package main
import (
"bufio"
"fmt"
"os"
)
func main() {
// stdout — oddiy natija
fmt.Fprintln(os.Stdout, "natija: muvaffaqiyatli")
// stderr — xato xabari (alohida oqim!)
fmt.Fprintln(os.Stderr, "ogohlantirish: konfiguratsiya fayli topilmadi, standart qiymatlar ishlatilmoqda")
// stdin — foydalanuvchidan kiritma o'qish
reader := bufio.NewReader(os.Stdin)
_ = reader // haqiqiy terminalda: line, _ := reader.ReadString('\n')
}Nega ularni ajratish muhim? Chunki terminalda ikkalasi ham ekranga chiqsa-da, ularni alohida yo'naltirish mumkin: myapp > natija.txt — faqat stdout faylga yoziladi, stderr esa baribir ekranda ko'rinadi. Shuning uchun oddiy natijalarni fmt.Println (yoki os.Stdout) bilan, xato/ogohlantirishlarni esa fmt.Fprintln(os.Stderr, ...) bilan yozish — yaxshi CLI amaliyoti hisoblanadi. os.Stdin esa foydalanuvchidan interaktiv kiritma olish uchun ishlatiladi (masalan bufio.NewReader(os.Stdin).ReadString('\n')), lekin bizning interaktiv Playground muhitimizda haqiqiy klaviatura kiritmasi mavjud emas, shuning uchun bu darsda faqat kontseptual ko'rib chiqamiz.
Key Takeaway
Key Takeaway:
stdout — oddiy natija, stderr — xato/ogohlantirish, stdin — kiruvchi ma'lumot. Ularni to'g'ri ajratish, dasturingizni boshqa dasturlar bilan birga ishlata oladigan (pipe qila oladigan) qiladi.
NEXT UP
Exit Codes and Error Handling