| @@ -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) | |||
| } | |||