| @@ -0,0 +1,61 @@ | |||||
| package main | |||||
| import "fmt" | |||||
| func main() { | |||||
| for i := 0; i < 5; i++ { | |||||
| fmt.Println(i) | |||||
| } | |||||
| for i := 0; ; { | |||||
| if i >= 5 { | |||||
| break | |||||
| } | |||||
| fmt.Println(i) | |||||
| i++ | |||||
| } | |||||
| i := 0 | |||||
| for i < 5 { | |||||
| fmt.Println(i) | |||||
| i++ | |||||
| } | |||||
| i = 0 | |||||
| for ; ; i++ { | |||||
| if i >= 5 { | |||||
| break | |||||
| } | |||||
| fmt.Println(i) | |||||
| } | |||||
| for i := 0; i < 5; { | |||||
| fmt.Println(i) | |||||
| i++ | |||||
| } | |||||
| i = 0 | |||||
| for ; i < 5; i++ { | |||||
| fmt.Println(i) | |||||
| } | |||||
| for i := 0; ; i++ { | |||||
| if i >= 5 { | |||||
| break | |||||
| } | |||||
| fmt.Println(i) | |||||
| } | |||||
| i = 0 | |||||
| for { | |||||
| if i >= 5 { | |||||
| break | |||||
| } | |||||
| fmt.Println(i) | |||||
| i++ | |||||
| } | |||||
| for i, j := 0, 10; i != j; i, j = i+1, j-1 { | |||||
| fmt.Println(i, j) | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,47 @@ | |||||
| package main | |||||
| import ( | |||||
| "fmt" | |||||
| "math/rand" | |||||
| "time" | |||||
| ) | |||||
| func main() { | |||||
| var x = 1 | |||||
| if x > 5 { | |||||
| fmt.Println("x est superieur a 5") | |||||
| } | |||||
| for i := 1; i < 100; i++ { | |||||
| fizzbuzz(i) | |||||
| } | |||||
| // Decommenter cette ligne pour avoir l'erreur depassement de capacite | |||||
| // fmt.Println(minRand(5000000000000000000)) | |||||
| } | |||||
| func fizzbuzz(n int) { | |||||
| if n%15 == 0 { | |||||
| fmt.Println("FizzBuzz") | |||||
| } else if (n % 5) == 0 { | |||||
| fmt.Println("Buzz") | |||||
| } else if (n % 3) == 0 { | |||||
| fmt.Println("Fizz") | |||||
| } else { | |||||
| fmt.Println(n) | |||||
| } | |||||
| } | |||||
| func minRand(min int) int { | |||||
| rand.Seed(time.Now().UnixNano()) | |||||
| if v := rand.Int(); v > min { | |||||
| return v | |||||
| } | |||||
| return min | |||||
| } | |||||
| func isEven(n int) bool { | |||||
| if n%2 == 1 { | |||||
| return false | |||||
| } | |||||
| return true | |||||
| } | |||||
| @@ -0,0 +1,54 @@ | |||||
| package main | |||||
| import ( | |||||
| "fmt" | |||||
| "math" | |||||
| ) | |||||
| var User string = "E2L !" | |||||
| type person struct { | |||||
| int | |||||
| } | |||||
| type aint int | |||||
| const ( | |||||
| BigConst = math.MaxFloat64 * math.MaxFloat64 | |||||
| data aint = 10 | |||||
| ) | |||||
| const ( | |||||
| a0 = iota // 0 | |||||
| a1 = iota // 1 | |||||
| a2 = iota // 2 | |||||
| a3 = iota // 3 | |||||
| ) | |||||
| const ( | |||||
| b0 = iota // 0 | |||||
| b1 // 1 | |||||
| b2 // 2 | |||||
| b3 // 3 | |||||
| ) | |||||
| const ( | |||||
| c0 = iota // 0 | |||||
| c1 = 43 | |||||
| c2 = 75 | |||||
| c3 = iota // 3 | |||||
| ) | |||||
| const d0 = iota //0 | |||||
| const d1 = iota //0 | |||||
| const d2 = iota //0 | |||||
| const d3 = iota //0 | |||||
| func main() { | |||||
| fmt.Println(a0, a1, a2, a3) | |||||
| fmt.Println(b0, b1, b2, b3) | |||||
| fmt.Println(c0, c1, c2, c3) | |||||
| fmt.Println(d0, d1, d2, d3) | |||||
| fmt.Println("Vive " + User); | |||||
| } | |||||
| @@ -0,0 +1,35 @@ | |||||
| package main | |||||
| import ( | |||||
| "fmt" | |||||
| ) | |||||
| func main() { | |||||
| adder := func(a int, b int) int { | |||||
| return a + b | |||||
| } | |||||
| fmt.Println(adder(5, 6)) | |||||
| counter1 := counter() | |||||
| counter2 := counter() | |||||
| fmt.Println(counter1()) | |||||
| fmt.Println(counter2()) | |||||
| deferredPrint() | |||||
| } | |||||
| func counter() func() int { | |||||
| i := 0 | |||||
| return func() int { | |||||
| i++ | |||||
| return i | |||||
| } | |||||
| } | |||||
| func deferredPrint() { | |||||
| defer fmt.Println("defer 1") | |||||
| fmt.Println("regular thing") | |||||
| defer fmt.Println("defer 2") | |||||
| } | |||||
| @@ -0,0 +1,74 @@ | |||||
| package main | |||||
| import ( | |||||
| "fmt" | |||||
| "math" | |||||
| "net/http" | |||||
| ) | |||||
| type bob int | |||||
| func (b bob) ServeHTTP(w http.ResponseWriter, r *http.Request) { | |||||
| w.Write([]byte("Salut tout le Monde !")) | |||||
| } | |||||
| type Circle struct { | |||||
| Radius float64 | |||||
| } | |||||
| type Rectangle struct { | |||||
| Width float64 | |||||
| Height float64 | |||||
| } | |||||
| type Shape interface { | |||||
| Area() float64 | |||||
| } | |||||
| func GetArea(s Shape) float64 { | |||||
| return s.Area() | |||||
| } | |||||
| func (c *Circle) Area() float64 { | |||||
| return math.Pi * c.Radius * c.Radius | |||||
| } | |||||
| func (r Rectangle) Area() float64 { | |||||
| return r.Height * r.Width | |||||
| } | |||||
| func main() { | |||||
| circle := Circle{5.0} | |||||
| r1 := Rectangle{4.0, 5.0} | |||||
| r2 := &Rectangle{10.0, 15.0} | |||||
| area := circle.Area() | |||||
| fmt.Println(area) | |||||
| GetArea(&circle) | |||||
| GetArea(r1) | |||||
| GetArea(r2) | |||||
| var x interface{} = 10 | |||||
| fmt.Println(x) | |||||
| str, ok := x.(string) | |||||
| if !ok { | |||||
| fmt.Println("Ne peut pas convertir l'interface x") | |||||
| } | |||||
| fmt.Printf("valeur: %v, Type: %T\n", x, x) | |||||
| x = 1 | |||||
| fmt.Printf("valeur: %v, Type: %T\n", x, x) | |||||
| fmt.Printf("valeur: %v, Type: %T\n", str, str) | |||||
| var y interface{} = "go" | |||||
| switch v := y.(type) { | |||||
| case int: | |||||
| fmt.Printf("Le double de %v vaut %v\n", v, v*2) | |||||
| case string: | |||||
| fmt.Printf("%q a une longueur de %v octets\n", v, len(v)) | |||||
| default: | |||||
| fmt.Printf("Le type de %T est inconnu !\n", v) | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,9 @@ | |||||
| package main | |||||
| import "fmt" | |||||
| func main() { | |||||
| int := 10 | |||||
| // var c int = 10 | |||||
| fmt.Println(int) | |||||
| } | |||||
| @@ -0,0 +1,11 @@ | |||||
| package main | |||||
| import "fmt" | |||||
| func main() { | |||||
| x := 5*10 + 6/3 | 7%4&15 // same as (5*10) + (6/3) | (7%4)&15 = 50 + 2 | 3&15 = 52 | 3 = | |||||
| fmt.Println(x) | |||||
| a := true && false || true && !false | |||||
| fmt.Println(a) | |||||
| } | |||||
| @@ -0,0 +1,68 @@ | |||||
| package main | |||||
| import "fmt" | |||||
| func main() { | |||||
| i := 10 | |||||
| fmt.Println(&i) | |||||
| n := &i | |||||
| fmt.Printf("%T\n", n) | |||||
| fmt.Println(n) | |||||
| fmt.Println(i) | |||||
| *n = 15 | |||||
| fmt.Println(i) | |||||
| j := 5 | |||||
| n = &j | |||||
| *n = 6 | |||||
| fmt.Println(i) | |||||
| a := 5 | |||||
| fmt.Println(a) // value is 5 | |||||
| pointer(&a) | |||||
| fmt.Println(a) // value is 10 | |||||
| a = 5 | |||||
| fmt.Println(a) // value is 5 | |||||
| value(a) | |||||
| fmt.Println(a) // value is still 5 | |||||
| ar := []int{1, 2, 3, 4} | |||||
| fmt.Println(ar) | |||||
| arrval(ar) | |||||
| fmt.Println(ar) | |||||
| arrpointer(&ar) | |||||
| fmt.Println(ar) | |||||
| m := make(map[int]int) | |||||
| m[1] = 1 | |||||
| m[2] = 2 | |||||
| m[3] = 3 | |||||
| fmt.Println(m) | |||||
| mapped(m) | |||||
| fmt.Println(m) | |||||
| m2 := map[int]int{1: 1} | |||||
| mapped(m2) | |||||
| fmt.Println(m2) | |||||
| } | |||||
| func pointer(x *int) { | |||||
| *x = 10 | |||||
| } | |||||
| func value(x int) { | |||||
| x = 10 | |||||
| } | |||||
| func arrval(a []int) { | |||||
| a = append(a, 5) | |||||
| } | |||||
| func arrpointer(a *[]int) { | |||||
| *a = append(*a, 5) | |||||
| } | |||||
| func mapped(m map[int]int) { | |||||
| m[4] = 4 | |||||
| } | |||||
| @@ -0,0 +1,68 @@ | |||||
| package main | |||||
| import "fmt" | |||||
| type person struct { | |||||
| name string | |||||
| } | |||||
| var p = person{name: "R Stallman"} | |||||
| func main() { | |||||
| p1 := person{name: "Jane Doe"} // ici person definit en global | |||||
| type person struct { | |||||
| name string | |||||
| age int | |||||
| } | |||||
| p2 := person{ // ici person en local | |||||
| name: "John Doe", | |||||
| age: 27, | |||||
| } | |||||
| fmt.Printf("Type de p: %+v\tp1: %v\tp2: %v\n", p, p1, p2) | |||||
| blocks() | |||||
| scopes() | |||||
| shadowing() | |||||
| } | |||||
| func blocks() { | |||||
| i := 10 | |||||
| { | |||||
| i := 5 | |||||
| fmt.Println(i) // i vaut 5 | |||||
| } | |||||
| fmt.Println(i) // i vaut 10 | |||||
| } | |||||
| var y = 100 | |||||
| func scopes() { | |||||
| x := 10 | |||||
| var z int | |||||
| { | |||||
| fmt.Println(x) | |||||
| y := 15 | |||||
| fmt.Println(y) | |||||
| z = 20 | |||||
| } | |||||
| fmt.Println(z) | |||||
| fmt.Println(y) | |||||
| } | |||||
| func shadowing() { | |||||
| x := 10 | |||||
| { | |||||
| x := 15 | |||||
| { | |||||
| x := 20 | |||||
| fmt.Println(x) | |||||
| } | |||||
| fmt.Println(x) | |||||
| } | |||||
| fmt.Println(x) | |||||
| } | |||||
| @@ -0,0 +1,74 @@ | |||||
| package main | |||||
| import ( | |||||
| "fmt" | |||||
| "math" | |||||
| ) | |||||
| type Wheel struct { | |||||
| Circle | |||||
| Material string | |||||
| Color string | |||||
| X float64 | |||||
| } | |||||
| func (w Wheel) Info() { | |||||
| fmt.Printf("Une roue est faite en %s de couleur %s\n", w.Material, w.Color) | |||||
| } | |||||
| type Circle struct { | |||||
| X float64 | |||||
| Y float64 | |||||
| Radius float64 | |||||
| } | |||||
| type Shape interface { | |||||
| Area() float64 | |||||
| Area2() float64 | |||||
| } | |||||
| func (c *Circle) Area() float64 { | |||||
| return c.Radius * c.Radius * math.Pi | |||||
| } | |||||
| func (c Circle) Area2() float64 { | |||||
| return c.Radius * c.Radius * math.Pi | |||||
| } | |||||
| func Area(c Circle) float64 { | |||||
| return c.Radius * c.Radius * math.Pi | |||||
| } | |||||
| func ShapeArea(s Shape) float64 { | |||||
| return s.Area() | |||||
| } | |||||
| func main() { | |||||
| c1 := Circle{ | |||||
| X: 15.0, | |||||
| Y: 12.0, | |||||
| Radius: 8.5, | |||||
| } | |||||
| c2 := Circle{15.0, 12, 8.5} | |||||
| fmt.Println(c1 == c2) | |||||
| fmt.Println(c1.Area() == c1.Area2()) | |||||
| w1 := Wheel{ | |||||
| Circle: Circle{ | |||||
| Radius: 10.0, | |||||
| X: 15.0, | |||||
| }, | |||||
| Material: "Caoutchouc", | |||||
| Color: "Noire", | |||||
| X: 5.0, | |||||
| } | |||||
| w1.Info() | |||||
| fmt.Println(w1.Area()) | |||||
| fmt.Println(w1.X) | |||||
| fmt.Println(w1.Circle.X) | |||||
| } | |||||
| @@ -0,0 +1,24 @@ | |||||
| package main | |||||
| import "fmt" | |||||
| var a = 10 | |||||
| var b int8 = 122 | |||||
| var c, d = 100, 200 | |||||
| const PI = 100 | |||||
| func main() { | |||||
| var a = 10 | |||||
| var b = 1.5 | |||||
| var c byte = 'c' | |||||
| var d = true | |||||
| var e = '😀' | |||||
| var f = "hello" | |||||
| var g = 1 + 3i | |||||
| var _1åœπbool = 10 | |||||
| fmt.Printf("%T\t%T\t%T\t%T\t%T\t%T\t%T\t%T\n", a, b, c, d, e, f, g, _1åœπbool) | |||||
| } | |||||