package main

import (
	"bufio"
	"fmt"
	"os"
	"strings"
)

func main() {
	// bufio.Reader membaca sampai delimiter yang kita pilih.
	pembaca := bufio.NewReader(strings.NewReader("nama:Budi\numur:25\n"))
	nama, _ := pembaca.ReadString('\n')
	umur, _ := pembaca.ReadString('\n')
	fmt.Printf("readstring: %q | %q\n", nama, umur)

	// bufio.Writer menampung tulisan lalu mengirimkannya saat Flush.
	penulis := bufio.NewWriter(os.Stdout)
	penulis.WriteString("baris lewat bufio.Writer\n")
	penulis.WriteString("baru terlihat setelah Flush\n")
	penulis.Flush()

	// bufio.Scanner memecah input menjadi baris.
	pemindai := bufio.NewScanner(strings.NewReader("ayam\nbebek\nkambing\n"))
	for pemindai.Scan() {
		fmt.Println("baris:", pemindai.Text())
	}

	// Scanner dengan pemisah kata.
	kata := bufio.NewScanner(strings.NewReader("belajar bufio itu mudah"))
	kata.Split(bufio.ScanWords)
	var daftar []string
	for kata.Scan() {
		daftar = append(daftar, kata.Text())
	}
	fmt.Println("kata:", strings.Join(daftar, "/"))
}
