2016-08-29 91 views
-2

我試圖創建一些隨機int數組並將其寫入Golang中的xyz.txt文件。
如何將ids這是一個int陣列轉換爲byte陣列,因爲file.Write接受[]byte作爲參數。將隨機整數數組寫入文本文件的正確方法是什麼?將int數組轉換爲Golang中的字節數組

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

但我得到'f.Write(ids)'''參數1具有不兼容類型''行的錯誤。我想寫一個文本文件的ID。如果這不是正確的方法。請告訴我這樣做的正確方式。 – Jagrati

+0

是的,但是一個字節數組本質上是一個字符數組(字節表示),我認爲你不希望你的int被解釋爲字符,而是想寫出組成數字的數字(這是兩個不同的東西) 。 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