// Created on savesnippets.com ยท https://savesnippets.com/AxbdUzKehu6uUp package main import ( "bufio" "fmt" "io" "os" ) func main() { // Whole file โ†’ []byte (only for small/medium files) data, err := os.ReadFile("config.toml") if err != nil { panic(err) } fmt.Println(string(data)) // Line-by-line โ€” constant memory f, _ := os.Open("/etc/hosts") defer f.Close() scanner := bufio.NewScanner(f) for scanner.Scan() { line := scanner.Text() if line != "" { fmt.Println(line) } } if err := scanner.Err(); err != nil { fmt.Println("scan error:", err) } // Stream bytes in chunks โ€” for binary or very large files big, _ := os.Open("/tmp/huge.bin") defer big.Close() buf := make([]byte, 4096) for { n, err := big.Read(buf) if n > 0 { // ... process buf[:n] ... } if err == io.EOF { break } if err != nil { panic(err) } } }