-1

I just want simply write to file a string converted from int. But f.WriteString instead of number write a symbols from ASCII code table.

I expected "noReport = 12320 nr3h = 105 nr2h = 162 nr1h = 38 ok = 16899"

But instead got "noReport = 〠 nr3h = i nr2h = ¢ nr1h = & ok = 䈃"

nekto
  • 27
  • 2
  • 10

2 Answers2

2

To get a string with your ints I recommend using fmt.Sprintf

It would be something like this;

s := fmt.Sprintf("noReport = %d nr3h = %d nr2h = %d nr1h = %d ok = 16899", 12320, 162, 38)

which will assign the value "noReport = 12320 nr3h = 105 nr2h = 162 nr1h = 38 ok = 16899" to s.

evanmcdonnal
  • 46,131
  • 16
  • 104
  • 115
1

https://play.golang.org/p/QAXJ4aJBy3

fmt.Printf("os.StdOut is %T\n", os.Stdout)
os.Stdout.WriteString("noReport = 12320 nr3h = 105 nr2h = 162 nr1h = 38 ok = 16899 \n")
os.Stdout.WriteString("12320")

//Output
//os.StdOut is *os.File
//noReport = 12320 nr3h = 105 nr2h = 162 nr1h = 38 ok = 16899 
//12320

Works fine for me.

Give us your code, please.

UDP

string(noReport), noReport is integer right? Thats expected behavior.

Use strconv.Itoa(noReport).

noReport := 12320
nr3h := 105
nr2h := 162
nr1h := 38
ok := 16899
os.Stdout.WriteString("noReport = "+ strconv.Itoa(noReport) + " nr3h = " + strconv.Itoa(nr3h)+ " nr2h = "+ strconv.Itoa(nr2h)+ " nr1h = "+ strconv.Itoa(nr1h) + " ok = "+ strconv.Itoa(ok)+ "\n") 

Or evanmcdonnal's answer.

Community
  • 1
  • 1
Darigaaz
  • 1,414
  • 10
  • 11
  • f, err := os.Create("/tmp/mt_report") if err != nil { panic(err) } defer f.Close() w := bufio.NewWriter(f) w.WriteString("noReport = "+ string(noReport) + " nr3h = " + string(nr3h)+ " nr2h = "+ string(nr2h)+ " nr1h = "+ string(nr1h) + " ok = "+ string(ok)+ "\n") – nekto Jun 03 '16 at 17:51