http://golang.org
Saturday, July 23, 2011
http://golang.org Saturday, July 23, 2011 The Expressiveness of Go - - PowerPoint PPT Presentation
http://golang.org Saturday, July 23, 2011 The Expressiveness of Go Rob Pike OSCON July 27, 2011 http://golang.org Saturday, July 23, 2011 Why Go? A response to Googles internal needs: - efficient large scale programming - speed of
http://golang.org
Saturday, July 23, 2011
http://golang.org
Saturday, July 23, 2011
2
Saturday, July 23, 2011
3
Saturday, July 23, 2011
4
Saturday, July 23, 2011
5
Saturday, July 23, 2011
6
Saturday, July 23, 2011
7
Saturday, July 23, 2011
8
Saturday, July 23, 2011
9
* extra count is for reserved words and alternate spellings
Saturday, July 23, 2011
10
Saturday, July 23, 2011
11
Saturday, July 23, 2011
12
Saturday, July 23, 2011
13
Saturday, July 23, 2011
14
Saturday, July 23, 2011
15
Saturday, July 23, 2011
16
Saturday, July 23, 2011
17
Saturday, July 23, 2011
18
Saturday, July 23, 2011
19
@mjmoriarity: The way Go handles interfaces is the way I wish every language handled them.
Saturday, July 23, 2011
20
Saturday, July 23, 2011
21
Saturday, July 23, 2011
22
var bufferedInput Reader = bufio.NewReader(os.Stdin)
Saturday, July 23, 2011
23
type Encoding interface { ReadRequestHeader(*Request) os.Error ReadRequestBody(interface{}) os.Error WriteResponse(*Response, interface{}) os.Error Close() os.Error }
func sendResponse(sending *sync.Mutex, req *Request,
reply interface{}, enc *gob.Encoder, err string)
func sendResponse(sending *sync.Mutex, req *Request, reply interface{}, enc Encoding, err string)
Saturday, July 23, 2011
24
Saturday, July 23, 2011
25
Saturday, July 23, 2011
26
Saturday, July 23, 2011
27
Saturday, July 23, 2011
28
Saturday, July 23, 2011
29
Saturday, July 23, 2011
30
* promote, not require. There are many possibilities.
Saturday, July 23, 2011
31
Saturday, July 23, 2011
32
type Work struct { x, y, z int }
func worker(in <-chan *Work, out chan <- *Work) { for w := range in { w.z = w.x * w.y
} }
func Run() { in, out := make(chan *Work), make(chan *Work) for i := 0; i < 10; i++ { go worker(in, out) } go sendLotsOfWork(in) receiveLotsOfResults(out) }
Saturday, July 23, 2011
33
Saturday, July 23, 2011
34
Saturday, July 23, 2011
35
Saturday, July 23, 2011
36
Saturday, July 23, 2011
37
Saturday, July 23, 2011
38
Saturday, July 23, 2011
39
Saturday, July 23, 2011
40
Saturday, July 23, 2011
41
Saturday, July 23, 2011
42 Saturday, July 23, 2011
43
Saturday, July 23, 2011
http://golang.org
Saturday, July 23, 2011
http://golang.org
Saturday, July 23, 2011