2016-08-29 28 views
-2

ランダムなint配列を作成し、Golangのxyz.txtファイルに書き込もうとしています。
int配列のidsbyte配列に変換する方法、file.Write[]byteをパラメータとして受け入れます。ランダム整数配列をテキストファイルに書き込む正しい方法は何ですか?Golangでint配列をバイト配列に変換する

func main() { 
    var id int 
    var ids []int 
    var count int 

    f, err := os.Create("xyz.txt") 
    check(err) 

    defer f.Close() 

    for j := 0; j < 5; j++ { 
     count = rand.Intn(100) 
     for i := 0; i < product_count; i++ { 
      id = rand.Intn(1000) 
      ids = append(product_ids, product_id) 
     } 
     n2, err := f.Write(ids) 
     check(err) 
     fmt.Printf("wrote %d bytes\n", n2) 
    } 
} 
+4

さて、あなたのファイルが持つべきフォーマットのみに依存し、何もしています「intをバイト配列に変換する」と関係がある。おそらく、ファイルにfmt.Fprintfを付けるべきです。 – Volker

+0

しかし、このエラーは、 '引数1に互換性のない型がある'行 'f.Write(ids)'にあります。テキストファイルにIDを書きたいと思います。これが正しい方法でない場合。これを行う正しい方法を教えてください。 – Jagrati

+0

ええ、バイト配列は基本的に文字の配列(バイト表現)ですが、あなたのintを文字として解釈するのではなく、数字を構成する数字を書く(2つの異なるもの) 。 Volkerが提案したように、fmt.Fprintfを使うべきでしょう。 – Jakumi

答えて

0

あなたはこの単純化作業をサンプルとして、fmt.Fprintを使用することがあります。

package main 

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

func main() { 
    f, err := os.Create("xyz.txt") 
    if err != nil { 
     panic(err) 
    } 
    defer f.Close() 
    w := bufio.NewWriter(f) 
    defer w.Flush() 

    for j := 0; j < 5; j++ { 
     count := 4 //count := rand.Intn(100) 
     for i := 0; i < count; i++ { 
      fmt.Fprint(w, rand.Intn(1000), " ") 
     } 
     fmt.Fprintln(w) 
    } 
} 

xyz.txt出力ファイル:

81 887 847 59 
81 318 425 540 
456 300 694 511 
162 89 728 274 
211 445 237 106 
関連する問題