GoDasturchi
Working with Standard Streams

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.

example.go
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

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.

example.go
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