我正在尝试将下面语句的输出写入文本文件,但我似乎无法确定是否存在直接写入文本文件的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])
答案 0 :(得分:13)
您可以将fmt.Fprintf
与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)
//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)
这应该写入文件。