Maison >développement back-end >Golang >Collection de questions pour novices Golang : résolvez les problèmes courants et progressez vers l'amélioration

Collection de questions pour novices Golang : résolvez les problèmes courants et progressez vers l'amélioration

王林
王林original
2024-05-06 21:51:01743parcourir

Visant les problèmes courants des novices de Golang, cet article propose une solution claire : définissez et initialisez la structure : tapez Person struct { Name string; Age Person p = {"John Doe", 30} use mapping: m : = make (map[string]int); m["Alice"] = 10 Gérer un nombre variable de paramètres : func sumAll(...int) int Lire et écrire des fichiers : fichier ouvert, écrire, lire Créer et utiliser Goroutine : go concurrentFunc (i)

Golang 新手疑问集锦:解决常见困扰,迈向精进

Collection de questions pour novices en Golang : Résoudre les problèmes courants et progresser vers l'amélioration

En tant que novice en Golang, il est facile de rencontrer divers problèmes. Cet article aidera les débutants à s'améliorer en fournissant des solutions claires et faciles à comprendre à certaines des frustrations les plus courantes.

1. Comment définir et initialiser la structure ?

type Person struct {
  Name string
  Age  int
}

p := Person{"John Doe", 30}

2. Comment utiliser Map ?

m := make(map[string]int)
m["Alice"] = 10
m["Bob"] = 20

fmt.Println(m["Alice"]) // 输出: 10

3. Comment recevoir un nombre variable de paramètres ?

func sumAll(numbers ...int) int {
  total := 0
  for _, num := range numbers {
    total += num
  }
  return total
}

result := sumAll(1, 2, 3, 4, 5) // result = 15

4. Comment lire et écrire des fichiers ?

f, err := os.Open("test.txt")
if err != nil {
  panic(err)
}
defer f.Close()

_, err = f.Write([]byte("Hello, world!"))
if err != nil {
  panic(err)
}

b := make([]byte, 10)
_, err = f.Read(b)
if err != nil {
  panic(err)
}
fmt.Println(string(b)) // 输出: "Hello, wo"

5. Comment créer et utiliser Goroutine ?

func concurrentFunc(i int) {
  fmt.Println(i)
}

for i := 0; i < 5; i++ {
  go concurrentFunc(i)
}
// 同时输出 0、1、2、3、4

Cas pratique

Supposons que nous souhaitions créer une API RESTful simple qui permet aux utilisateurs de gérer des tâches.

1. Définir la structure des tâches :

type Task struct {
  ID   int
  Name string
  Desc string
}

2. Créer une collection de tâches :

tasks := make([]Task, 0)

3. Traiter la demande de création de tâche :

func createTask(w http.ResponseWriter, r *http.Request) {
  var task Task
  if err := json.NewDecoder(r.Body).Decode(&task); err != nil {
    http.Error(w, "Invalid JSON", http.StatusBadRequest)
    return
  }

  tasks = append(tasks, task)
  fmt.Fprint(w, "Task created successfully")
}

4. 5 . Démarrez le serveur HTTP :

func getTasks(w http.ResponseWriter, r *http.Request) {
  enc := json.NewEncoder(w)
  if err := enc.Encode(tasks); err != nil {
    http.Error(w, "Failed to encode tasks", http.StatusInternalServerError)
    return
  }
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn