这取决于你想要做什么。

file, err := os.Open("file.txt")
fmt.print(file)
*os.FileREAD
ioutil.ReadAll
package main

import (
    "fmt"
    "io/ioutil"
    "os"
    "log"
)

func main() {
    file, err := os.Open("file.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()


  b, err := ioutil.ReadAll(file)
  fmt.Print(b)
}
*os.File
func main() {
    file, err := os.Open("file.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()


    buf := make([]byte, 32*1024) // define your buffer size here.

    for {
        n, err := file.Read(buf)

        if n > 0 {
            fmt.Print(buf[:n]) // your read buffer.
        }

        if err == io.EOF {
            break
        }
        if err != nil {
            log.Printf("read %d bytes: %v", n, err)
            break
        }
    }

}
bufioScannerScanner

默认情况下,扫描程序按换行推进令牌(当然,您可以自定义扫描程序如何标记您的文件,从这里学习 bufio测试 )。

package main

import (
    "fmt"
    "os"
    "log"
    "bufio"
)

func main() {
    file, err := os.Open("file.txt")
    if err != nil {
        log.Fatal(err)
    }
    defer file.Close()

    scanner := bufio.NewScanner(file)

    for scanner.Scan() {             // internally, it advances token based on sperator
        fmt.Println(scanner.Text())  // token in unicode-char
        fmt.Println(scanner.Bytes()) // token in bytes

    }
}

最后,我还想向您介绍这个令人敬畏的网站: go-lang文件cheatsheet 。 它包含了与在go-lang中处理文件相关的几乎所有内容,希望您会发现它很有用。