title: Unable to properly split a string using "\n" in golang
body: <p>I am trying to split the output of <code>free</code> command into 3 lines. A general output of free is</p>
  
  <p><code>total        used        free      shared  buff/cache   available
  Mem:       16309236    11129884      860300      534300     4319052     4306208
  Swap:      20971516      234236    20737280
  </code></p>
  
  <p>But when I am using strings.Split() of <code>golang</code> the <code>Split</code> function is now behaving as expected. I tried debugging it but could not find anything.</p>
  
  <p>Kindly help. </p>
  
  <pre><code>package main
  
  import "os/exec"
  import "github.com/golang/glog"
  import "fmt"
  import "strings"
  import "errors"
  
  func thisWorks() {
      str_out := "hello world \n How are you \nthis is good"
      lines := strings.Split(str_out, "\n")
      fmt.Printf("lines is  \n%s\n", lines)
  }
  
  func GetFreeOutput() error {
  
      var errMsg string
      bytes_out, err := exec.Command("free").Output()
  
      // This shows that the output has 10 (newline) in it.
      fmt.Println(bytes_out)
  
      if err != nil {
          errMsg = "Error geting output of free command"
          glog.Fatal(errMsg)
          return errors.New(errMsg)
      }
  
      str_out := string(bytes_out)
      fmt.Printf("str_out is  \n%s", str_out)
  
      // This is not splitting the lines, it is converting the whole output to a single line.
      fmt.Println("\nLines are ", strings.Split(str_out, "\n"))
  
      index_of_newline := strings.Index(str_out, "\n")
  
      // This gives the index of "\n" as 79 on my machine, which is correct.
      fmt.Printf("\nIndex is %d", index_of_newline)
  
      fmt.Println("\nLine using index are ", strings.Split(str_out, string(str_out[index_of_newline])))
  
      return nil
  }
  
  func main() {
      err := GetFreeOutput()
      fmt.Printf("Error is %s", err)
  }
  </code></pre>