2016-08-29 73 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