A apresentação introduz a linguagem Go, destacando suas características como tipagem dinâmica em um sistema de tipos estáticos, ausência de herança mas presença de métodos, e dois compiladores principais. Exemplos demonstram sintaxes como declaração de variáveis, estruturas de controle, funções, maps, channels e paralelismo.
2. O que têm?
● Nova :)
● Experimental ¬¬
● Concorrente :D
● Coletor de lixo ¬¬
● Programação de Sistemas o/
● Linguagem divertida e moderna
3. Maaais sobre o Compilador
● Impressão de tipagem dinâmica em um sistema
de tipo estático
● Tipos são bem flexíveis
● Existe métodos mas não NÃO é OO
● Compilador 6g (ken)
● Experimental, código ótimo e rápido, não liga GCC
● Compilador gccgo (iant)
● Tradicional, código bom e não tão rápido, liga GCC
5. Variáveis e Estruturas de Controle
var a int
var b, c *int // note a diferença com C
var d []int
type S struct { a, b int }
if a == b { return true } else { return false }
for i = 0; i < 10; i++ { ... }
6. Algumas mudanças em relação a C
+x
23 + 3*x[i]
x <= f()
^a >> b
f() || g()
x == y + 1 && <chan_ptr > 0
x &^ 7 // x com 3 bits baixos em 0
fmt.Printf("%5.2gn", 2*math.Sin(PI/8))
"hello" ", " "there" // concatenação léxica
"hello, " + str // concatenação dinâmica
7. Vamos melhorar
var (
i int;
j = 356.245;
k int = 0;
l, m uint64 = 1, 2;
billion int64 = 1e9;
inter, floater, stringer = 1, 2.0, "hi"
)
17. closures
func adder() (func(int) int) {
var x int;
return func(delta int) int {
x += delta;
return x
}
}
var f = adder();
fmt.Print(f(1));
fmt.Print(f(20));
fmt.Print(f(300));
// Imprime 1 21 321
19. Paralelismo
var freeList = make(chan *Buffer, 100)
var serverChan = make(chan *Buffer)
func server() {
for {
b := <-serverChan; // wait for work
process(b);
ok := freeList <- b // reuse buffer if room
}
}
func client() {
for {
b, ok := <-freeList; // grab one if available
if !ok { b = new(Buffer) }
load(b);
serverChan <- b // send to server
}
}
20. Mais
● Métodos em structs
● Interfaces
● Many to many
● Iterators e generators
● http://golang.org/