ホームページ  >  記事  >  バックエンド開発  >  Golang 初心者向けの質問集: よくある問題を解決し、改善に向けて進む

Golang 初心者向けの質問集: よくある問題を解決し、改善に向けて進む

王林
王林オリジナル
2024-05-06 21:51:01697ブラウズ

Golang 初心者が直面する一般的な問題に対応して、この記事では明確な解決策を提供します。type Person struct { Name string; Age int }; マッピングを使用して構造を定義および初期化します。 : m: = make(map[string]int); m["Alice"] = 10 可変数のパラメータの処理: func sumAll(...int) int ファイルの読み取りと書き込み: ファイルのオープン、書き込み、読み取り 作成およびGoroutine の使用: go concurrentFunc(i)

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

Golang 初心者向けの質問集: 一般的な問題を解決し、改善に向けて進む

初心者としてGolang は非常に難しく、さまざまな問題に遭遇しやすいです。この記事は、最も一般的なフラストレーションのいくつかに対する明確でわかりやすい解決策を提供することで、初心者が上達するのに役立ちます。

1. 構造体を定義して初期化するにはどうすればよいですか?

type Person struct {
  Name string
  Age  int
}

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

2. マッピング(地図)の使い方は?

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

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

3. 可変数のパラメータを受け取るにはどうすればよいですか?

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. ファイルの読み取りと書き込みの方法は?

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.Goroutine を作成して使用するにはどうすればよいですか?

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

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

実用的なケース

ユーザーがタスクを管理できるようにする単純な RESTful API を作成するとします。

1. タスク構造を定義します:

type Task struct {
  ID   int
  Name string
  Desc string
}

2. タスク コレクションを作成します:

tasks := make([]Task, 0)

3プロセス作成タスク要求:

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. プロセス取得タスク要求:

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

5. HTTP サーバーを開始します。 # れー

以上がGolang 初心者向けの質問集: よくある問題を解決し、改善に向けて進むの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。