package main import "fmt" func init() { fmt.Println("Salut depuis main 1") } func init() { fmt.Println("Salut depuis main 2") } func init() { fmt.Println("Salut depuis main 3") } func main() { fmt.Println("Salut tout le Monde") q, r := NamedDivide(15, 6) fmt.Printf("Division 15 / 6, Quotient: %d Reste: %d\n", q, r) fmt.Printf("Facture: %.2f\n", Facture(8.75, 10.2, 3.7)) Bonjour() Bonjour := func() string { return "On cache la fonction externe Bonjour" } TakeFunc(GiveFunc()) TakeFunc(Bonjour) } func Bonjour() { fmt.Println("Bonjour") } // ceci provoque une erreur de redefinition // func Bonjour(m string) { // fmt.Println(m) // } func Add(a, b int) int { return a + b } func Divide(a, b int) (int, int) { return a / b, a % b } func NamedDivide(a, b int) (quotient int, remainder int) { quotient, remainder = a/b, a%b return } func TakeFunc(take func() string) { data := take() fmt.Println(data) } func GiveFunc() func() string { f := func() string { return "Fonction retour" } return f } func Facture(mht float64, items ...float64) (total float64) { for _, item := range items { total += item } total *= (1 + mht*.01) return }