title: How to contain space in value string of link flag when using go build
body: <p>Here is test code m.go:</p>
  
  <pre><code>package main
  
  var version string
  
  func main() {
      println("ver = ", version)
  }
  </code></pre>
  
  <p>If I compile and link with go 1.5:</p>
  
  <pre><code>go tool compile m.go
  go tool link -o m -X main.version="abc 123" m.o
  </code></pre>
  
  <p>Works fine.</p>
  
  <p>But if I use build command with go 1.5:</p>
  
  <pre><code>go build -o m -ldflags '-X main.version="abc 123"' m.go
  </code></pre>
  
  <p>It will show help message, which means something wrong</p>
  
  <p>If I change to 1.4 syntax:</p>
  
  <pre><code>go build -o m -ldflags '-X main.version "abc 123"' m.go
  </code></pre>
  
  <p>It works except a warning message:</p>
  
  <pre><code>link: warning: option -X main.version abc 123 may not work in future releases; use -X main.version=abc 123
  </code></pre>
  
  <p>If it has no space in parameter value, works fine:</p>
  
  <pre><code>go build -o m -ldflags '-X main.version=abc123' m.go
  </code></pre>
  
  <p>Because compile and link works fine, So I think it is not link part issue.
  I compared go1.4 and go 1.5 source code of build, for ldflags part, looks nothing changed. Of cause I can use some spacial char to replace space then in program to change it back, but why? Is there something I missed? What is the right syntax to use -ldflags ? Thanks</p>