2017-04-25 8 views
1
  1. 私はファイル
  2. を作成し、0〜10
  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

'string'に' integer'を変換するには、 'strconv'または' fmt.Sprintf'を使う必要があります。 [this 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)変換を使用してエラーをチェックし、エラーを確認してから、エラーを確認する必要があります。

はこれを試してみてください:

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 –