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