woensdag 28 maart 2012

Google Go1 is live gegaan!!!

Ik heb vandaag een berichtje gekregen dat google Go zijn eerste stabiele release uit heeft gebracht. GO1
Ik ben het onmiddelijk gaan uit testen en was zeer onder de indruk over de 'out of the box' functionality voor de windows release. Installeren ging vlotjes, het toevoegen van extra packages was ook geen probleem. Ik ben onder de indruk.

Google Go en Mongo database

Na het spelen met een tiny webserver in Google Go leek het me wel leuk om die webserver eens te laten verbinden met een database. Hierbij dacht ik niet aan een alledaagse entity relation database, maar eens iets anders. Hierbij kwam ik al vlug uit op Mongo DB. Het installeren ging heel vlug en ik had al gelezen over een package speciaal voor deze database.

De package die ik moenteel gebruik noemt MGO en kan je vrij eenvoudig installeren door het volgende commando uit te voeren. 

go get launchpad.net/mgo

Ik zeg er wel bij dat dit me niet lukte voor de release van Go1. Daarom had ik het even opzij gelegd en ben nu opnieuw begonnen. Deze download en installeerd de packages onder de folder C:\Go\src\pkg\launchpad.net.
Daarom dat je bij het importeren van deze packages volgende path gebruikt.

"launchpad.net/mgo"
"launchpad.net/mgo/bson"

Volgend script maakt het mogelijk om iets in de database weg te schrijven en terug op te halen.

package main

import (
        "fmt"
        "launchpad.net/mgo"
"launchpad.net/mgo/bson"
)

type Person struct {
        Name string
        Phone string
}

func main() {
session, err := mgo.Dial("localhost")
if err != nil {
panic(err)
}
defer session.Close()
c := session.DB("journal").C("people")
err = c.Insert(&Person{"Ale", "+55 53 8116 9639"},
  &Person{"Cla", "+55 53 8402 8510"})
if err != nil {
panic(err)
}

result := Person{}
err = c.Find(bson.M{"name": "Ale"}).One(&result)
if err != nil {
panic(err)
}

fmt.Println("Phone:", result.Phone)
}