Un cours pour se lancer dans la programmation avec le langage Go (golang).
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

92 lines
1.9 KiB

  1. /* Copyright (C) 2011-2023 Patrick H. E. Foubet - E2L Ivry
  2. Ecole du Logiciel Libre : https://e2li.org/
  3. This program is free software: you can redistribute it and/or modify
  4. it under the terms of the GNU General Public License as published by
  5. the Free Software Foundation, either version 3 of the License, or any
  6. later version.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU General Public License for more details.
  11. You should have received a copy of the GNU General Public License
  12. along with this program. If not, see <http://www.gnu.org/licenses/>
  13. *******************************************************************/
  14. package main
  15. import "fmt"
  16. func init() {
  17. fmt.Println("Salut depuis main 1")
  18. }
  19. func init() {
  20. fmt.Println("Salut depuis main 2")
  21. }
  22. func init() {
  23. fmt.Println("Salut depuis main 3")
  24. }
  25. func main() {
  26. fmt.Println("Salut tout le Monde")
  27. q, r := NamedDivide(15, 6)
  28. fmt.Printf("Division 15 / 6, Quotient: %d Reste: %d\n", q, r)
  29. fmt.Printf("Facture: %.2f\n", Facture(8.75, 10.2, 3.7))
  30. Bonjour()
  31. Bonjour := func() string {
  32. return "On cache la fonction externe Bonjour"
  33. }
  34. TakeFunc(GiveFunc())
  35. TakeFunc(Bonjour)
  36. }
  37. func Bonjour() {
  38. fmt.Println("Bonjour")
  39. }
  40. // ceci provoque une erreur de redefinition
  41. // func Bonjour(m string) {
  42. // fmt.Println(m)
  43. // }
  44. func Add(a, b int) int {
  45. return a + b
  46. }
  47. func Divide(a, b int) (int, int) {
  48. return a / b, a % b
  49. }
  50. func NamedDivide(a, b int) (quotient int, remainder int) {
  51. quotient, remainder = a/b, a%b
  52. return
  53. }
  54. func TakeFunc(take func() string) {
  55. data := take()
  56. fmt.Println(data)
  57. }
  58. func GiveFunc() func() string {
  59. f := func() string {
  60. return "Fonction retour"
  61. }
  62. return f
  63. }
  64. func Facture(mht float64, items ...float64) (total float64) {
  65. for _, item := range items {
  66. total += item
  67. }
  68. total *= (1 + mht*.01)
  69. return
  70. }