golang: fungsi untuk mendapatkan beberapa baris data inputan user di terminal / stdin
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func ScanLn(rslt *[]interface{}) {
n := 0
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(func(data []byte, atEOF bool) (adv int, tkn []byte, err error) {
//callback ini dipanggil setiap pindah baris baru (user ketik Enter)
if atEOF {
*rslt = make([]interface{}, n) //menentukan alokasi memory yang dibutuhkan
i := 0
for k := 0; k < n; k++ {
adv, tkn, err = bufio.ScanLines(data[i:], atEOF)
i += adv
(*rslt)[k] = string(tkn)
}
}
n++
return
})
scanner.Scan()
}
func main() {
println("inputkan beberapa baris data, akhiri dengan Ctrl-Z lalu Enter")
var result []interface{}
ScanLn(&result)
f := "hasil :\n" + strings.Repeat(", %s", len(result))[2:] + "\n"
fmt.Printf(f, result...)
}