如何将此语句的输出写入Golang中的文件

时间:2016-02-11 07:35:41

标签: file go io

我正在尝试将下面语句的输出写入文本文件,但我似乎无法确定是否存在直接写入文本文件的printf函数。例如,如果下面的代码产生结果[5 1 2 4 0 3],我想将其读入文本文件以进行存储和持久化。有什么想法吗?

我想转到文本文件的代码:

//choose random number for recipe
r := rand.New(rand.NewSource(time.Now().UnixNano()))
i := r.Perm(5)
fmt.Printf("%v\n", i)
fmt.Printf("%d\n", i[0])
fmt.Printf("%d\n", i[1])

3 个答案:

答案 0 :(得分:13)

您可以将fmt.Fprintfio.Writer一起使用,func check(err error) { if err != nil { panic(err) } } func main() { f, err := os.Create("/tmp/yourfile") check(err) defer f.Close() w := bufio.NewWriter(f) //choose random number for recipe r := rand.New(rand.NewSource(time.Now().UnixNano())) i := r.Perm(5) _, err = fmt.Fprintf(w, "%v\n", i) check(err) _, err = fmt.Fprintf(w, "%d\n", i[0]) check(err) _, err = fmt.Fprintf(w, "%d\n", i[1]) check(err) w.Flush() } 代表您文件的句柄。

这是一个简单的例子:

panic()

在Go中显示更多写入文件的方式here

请注意,我在这里使用panic()只是为了简洁起见,在现实生活中你应该适当地处理错误(在大多数情况下,这意味着除了退出程序之外的其他内容,do { m=(a+b)/2; /* Change 1, 4 lines */ pA=polynomial(a,c3,c2,c1,c0); pB=polynomial(b,c3,c2,c1,c0); pM=polynomial(m,c3,c2,c1,c0); if(pA*pM<0) { b=m; } else { a=m; /* Change 2, 1 line */ } } while(pM!=0 && fabs(a-b)>0.0001); 一样)。

答案 1 :(得分:4)

此示例将值写入output.txt文件。

package main

import (
    "bufio"
    "fmt"
    "math/rand"
    "os"
    "time"
)

func main() {

    file, err := os.OpenFile("output.txt", os.O_WRONLY|os.O_CREATE, 0666)
    if err != nil {
        fmt.Println("File does not exists or cannot be created")
        os.Exit(1)
    }
    defer file.Close()

    w := bufio.NewWriter(file)
    r := rand.New(rand.NewSource(time.Now().UnixNano()))
    i := r.Perm(5)
    fmt.Fprintf(w, "%v\n", i)

    w.Flush()
}

答案 2 :(得分:2)

使用os包创建文件,然后将其传递给Fprintf

file, fileErr := os.Create("file")
if fileErr != nil {
    fmt.Println(fileErr)
    return
}
fmt.Fprintf(file, "%v\n", i)

这应该写入文件。