2017-04-25 99 views
1
  1. 我从0到10
  2. 我创建了一个文件
  3. 生成的数字和我尝试整数转换为字符串

写入文件,但是当我打开h.txt文件中有没什么好写的如何使用Golang在文件中编写整数?

如何解决这个问题,并把数字写入h.txt文件?

package main 

import "os" 

func main() { 
    for i := 0; i < 10; i++ { // Generating... 

     f, _ := os.Create("h.txt") // creating... 

     f.WriteString(string(i)) // writing... 

     defer f.Close() 
    } 
} 

谢谢!

+0

你不检查就'os.Create'错误,请确保是写入文件前为零。 –

+1

您需要使用'strconv'或'fmt.Sprintf'来将'integer'转换为'string'。看看[这个QA](https://stackoverflow.com/questions/10105935/how-to-convert-an-int-value-to-string-in-go)。 – putu

回答

3

您的代码有几个问题。

1)您打开文件多次,每循环迭代; os.Create将截断该文件,如果它已经存在,所以您可能正在写和截断它在每次迭代。

2)你不检查文件打开正确无误

3)defer时间表代码函数结束时,而不是在范围内的运行结束。 (即在迭代结束时)

4)您应该正确地转换整数,使用转换并检查错误:_, err := f.WriteString(fmt.Sprintf("%d",i)),然后检查错误。

试试这个:

package main 

import (
    "fmt" 
    "os" 
) 

func main() { 
    f, err := os.Create("h.txt") // creating... 
    if err != nil { 
     fmt.Printf("error creating file: %v", err) 
     return 
    } 
    defer f.Close() 
    for i := 0; i < 10; i++ { // Generating... 
     _, err = f.WriteString(fmt.Sprintf("%d\n", i)) // writing... 
     if err != nil { 
      fmt.Printf("error writing string: %v", err) 
     } 
    } 
} 
+0

谢谢John的回复,+1 –

+0

不客气,随时upvote和接受,如果这可以解决您的问题@MarcusPereira –