如何将这个语句的输出写入到 Golang 中的文件中?

huangapple go评论91阅读模式
英文:

How to write the output of this statement into a file in Golang

问题

我正在尝试将下面的语句输出写入到一个文本文件中,但我无法确定是否有一个可以直接将输出写入文本文件的 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])

请注意,我只会翻译文本内容,不会执行代码或回答关于代码的问题。

英文:

I'm trying to write the output of the statement below into a text file but I can't seem to find out if there is a printf function that writes directly to a text file. For example if the code below produces the results [5 1 2 4 0 3] I would want to read this into a text file for storage and persistence. Any ideas please?

The code I want to goto the text file:

//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])

答案1

得分: 27

你可以使用fmt.Fprintfio.Writer一起使用,io.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)
    // 为配方选择随机数
    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()
}

在Go中写入文件的其他方法可以在这里找到。

请注意,我在这里使用panic()只是为了简洁起见,在实际情况中,你应该适当处理错误(大多数情况下不是退出程序,而是panic()所做的其他操作)。

英文:

You can use fmt.Fprintf together with an io.Writer, which would represent a handle to your file.

Here is a simple example:

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()
}

More ways of writing to file in Go are shown here.

Note that I have used panic() here just for the sake of brevity, in the real life scenario you should handle errors appropriately (which in most cases means something other than exiting the program, what panic() does).

答案2

得分: 5

这个例子将值写入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("文件不存在或无法创建")
		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()
}
英文:

This example will write the values into the output.txt file.

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()
}

答案3

得分: 4

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

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

这段代码将会写入文件。

英文:

Use os package to create file and then pass it to Fprintf

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

This should write to file.

huangapple
  • 本文由 发表于 2016年2月11日 15:35:40
  • 转载请务必保留本文链接:https://go.coder-hub.com/35333302.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定