web-dev-qa-db-ja.com

このステートメントの出力を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])
12
Tbalz

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

Goでファイルに書き込むその他の方法を示します here

簡潔にするために、ここではpanic()を使用していることに注意してください。実際のシナリオでは、エラーを適切に処理する必要があります(ほとんどの場合、プログラムを終了する以外の何か、つまりpanic()します)。

18
syntagma

この例では、値を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()
}
4
Endre Simo

osパッケージを使用してファイルを作成し、Fprintfに渡します

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

これはファイルに書き込む必要があります。

2
sfault