text: “Today. They are available for Linux, FreeBSD, Mac OS X and, we are thrilled to announce, Windows.”
  Go version 1 released
  About The Author
  Thom Holwerda
  Follow me on Twitter @thomholwerda
  33 Comments
  2012-03-28 11:32 pmtylerdurden
  Why didn’t D go with C?
  2012-03-29 12:17 amsatsujinka
  What’s D’s concurrency model like? Because goroutines and channels are wonderfully easy to use.
  Another goal of Go is speed of compilation. D probably doesn’t compete very well (but that’s just a suspicion based on the sizes of the two languages.)
  D is generally more complicated than Go wants to be. Essentially, D is a better C++ but Go is a better C.
  2012-03-30 3:29 pmmoondevil
  What’s D’s concurrency model like? Because goroutines and channels are wonderfully easy to use.
  D offers the actors model, along with the usual concurrency models offered by all mainstream operating systems.
  Another goal of Go is speed of compilation. D probably doesn’t compete very well (but that’s just a suspicion based on the sizes of the two languages.).
  2012-03-30 6:29 pmsatsujinka
  Go has iota for creating enums. The rest of those C doesn’t have either. And how else do you expect go to compile C code if not with a C compiler?
  Honestly, Google really isn’t all that interesting a facet of Go. I’m more interested in it due to its authors’ histories.
  2012-04-01 2:44 pmmoondevil.
  I’m eager to try Go once it gets a decent GUI library. Sounds like it would be perfect for the kind of work I do.
  2012-03-29 5:58 amsatsujinka
  have you given go-gtk a look?
  2012-03-29 8:03 amcoldandflu
  Briefly. It’s still in early development as far as I can tell.
  2012-03-29 5:57 amsatsujinka
  considering the authors of go are fundamentally opposed to including generic, I’m surprised you’d feel the need to ask that question.
  though I do wish they’d include them, since there are generic functions and types in the specification. You just can’t create one for yourself.
  -
  2012-03-29 3:45 pmjello
  > considering the authors of go are “fundamentally opposed” to including generic, I’m surprised you’d feel the need to ask that question.
  What are you talking about?
  Rob Pike said in one video I saw they are thinking how to implement it. And it could be that it will never show up in Go.
  So “fundamentally opposed” seems to me your own opinion.
  2012-03-29 8:14 pmsatsujinka
  They considered it because people requested it. But if you read around the golang-nuts group you’ll find that the general opinion of generics is that they are close to useless.
  Am I missing something with Go? The syntax is as complicated as C for learners, but different enough to cause massive typo problems for experienced programmers. It has pointers, but no pointer arithmetic (so really what is the point…). Slices and re-slicing look like one major “where is the semi-colon” run-time bug waiting to happen. And goroutines/channels are cool, but they could be implemented with functions in C.
  Admittedly, I have only read the “A Tour of Go” document, but it leaves me with one big question. If everybody else is so excited about this language, what am I missing?
  2012-03-29 8:23 pmsatsujinka-29 9:59 pmjburnett-30 3:30 amsatsujinka) {}
  2012-03-30 12:29 pmjburnett.
  2012-03-30 3:39 pmmoondevil
  Am I missing something with Go? The syntax is as complicated as C for learners, but different enough to cause massive typo problems for experienced programmers. It has pointers, but no pointer arithmetic (so really what is the point…).
  You can do pointer arithmetic when making use of the unsafe package.
  If everybody else is so excited about this language, what am I missing?
  Honestly, people get crazy about it, because it is a Google language. I seriously doubt anyone would care, if that would not be the case.
  We all know how Plan9 sadly ended, the previous project where the main Go authors were part of. It was not their fault, but Go is very similar to Alef and this might be their attempt to revive the language.
  Go Web sever with bare “hello world” is 10x slower than equivalent in C and almost as fast as Java Play Framework with a lot of magic behind.
  This is unacceptable. When I’ll place my app written in Go on Cloud service it will cost me a lot for wasted CPU time.
  2012-03-29 4:43 pmvoidlogic
  Your test case is like measuring language performance by seeing who runs this C++ code the fastest:
  for(int i = 0; i < 100000; i++);
  That is a useless micro-benchmark.
  Any program I have written in Go that is non-trivial has had acceptable to excellent performance. I would also like to point out that post Go1 there are aggressive compiler and garbage collector upgrades waiting to commit. Go is still young.
  Maybe Go currently isn’t better than Java (currently) on the CPU front, but it is better Java on the memory front:…
  Low memory usage and “good enough” CPU usage is more important to most real world apps.
  Also, go is still much better than something like PHP on the CPU front:…
  I’m also interested in which version of go you ran your test with.
  2012-03-29 9:41 pmValhalla.
  2012-03-29 9:59 pmkalcytriol
  Not that kind of benchmark.
  I did some testing using ApacheBench.
  I manually managed to go up to 10k RPS for Go (setting up number of cores). But all this is still too slow (7 times slower).
  2012-03-29 10:22 pmvoidlogic.
  2012-03-29 11:19 pmkalcytri
  2012-03-30 1:35 amkalcytriol).
  2012-03-30 6:34 pmvoidlogic
  “BTW do you know any other optimization tricks?”
  I’d be happy to take a look, can you post a link to your latest code?
  As far as documentation, check out
  Specifically regarding headers:
  2012-03-30 11:07 pmkalcytriol
  Nothing special, just:
  GOMAXPROCS=4
  hello.go ———————————————-
  package main
  import (
  “net/http”
  “fmt”
  “strconv”
  )
  var hellostr string=”HelloWorld”
  var hellolen string=strconv.Itoa(len(hellostr))
  func handler(w http.ResponseWriter, r *http.Request) {
  w.Header().Set(“Content-Type”, “text/plain; charset=UTF-8”)
  w.Header().Set(“Content-Length”, hellolen) // this icreases server performance 2x ,from 11kRPS to 22k RPS (requests per second)
  fmt.Fprintf(w, hellostr);
  }
  func main() {
  http.HandleFunc(“/”, handler)
  http.ListenAndServe(“:8080”, nil)
  }
  —————————————————
  2012-03-30 11:47 pmvoidlogic
  Your posted program would get 6-8k per run on my machine with ab -k -n 200000 -c 800
  The below program gets 60,000+ RPS on my machine, changes:
  * Set max procs dynamicaly
  * Stopped net/http go from getting and sending the time with every request
  * used fprint rather than fprintf (faster)
  package main
  import (
  “fmt”
  “net/http”
  “strconv”
  “runtime”
  )
  const hellostr = “HelloWorld”
  var hellolen string = strconv.Itoa(len(hellostr))
  func handler(w http.ResponseWriter, r *http.Request) {
  w.Header().Set(“Content-Type”, “text/plain; charset=UTF-8”)
  w.Header().Set(“Content-Length”, hellolen) // 2x faster ,from 11k RPS to 22k RPS (requests per second)
  w.Header().Set(“Date”, “”)
  fmt.Fprint(w, hellostr)
  }
  func main() {
  runtime.GOMAXPROCS(runtime.NumCPU()/2 + 1)
  http.HandleFunc(“/”, handler)
  http.ListenAndServe(“:8080”, nil)
  }
  2012-03-31 1:51 amkalcytriol
  Thanks for reply.
  Your code performs as well as mine on my machine.
  Setting Date to blank has a barely noticable influence on benchmark results.
  A greater role has setting proper number of cores and http chunking.
  BTW im running a Linux machine, so I have GOMAXPROCS set up manually to 2*n_cores (4) in bashrc.
  Before that i had 6-7k RPCs just like You. Thanks for “runtime” line so from now on I wont have to use manual setup.
  Edited 2012-03-31 01:53 UTC
  Also has partial support for Go 1.
  Their plan is to have a complete implementation in the 4.7.1 release.
  Edited 2012-03-28 20:55 UTC
  Go’s libraries have gotten much cleaner than they were last year. I was using the rc for awhile and it’s been much smoother than the last “stable” release.
  Why?