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

王林
Libérer: 2024-05-06 21:51:01
original
710 Les gens l'ont consulté

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}
Copier après la connexion

2. Comment utiliser Map ?

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

fmt.Println(m["Alice"]) // 输出: 10
Copier après la connexion

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
Copier après la connexion

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"
Copier après la connexion

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
Copier après la connexion

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
}
Copier après la connexion

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

tasks := make([]Task, 0)
Copier après la connexion

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")
}
Copier après la connexion

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
  }
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal