針對Golang 新手的常見問題,本文提供了明確解決方案:定義並初始化結構體:type Person struct { Name string; Age int }; Person p = {"John Doe", 30}使用映射:m : = make(map[string]int); m["Alice"] = 10處理可變數量參數:func sumAll(...int) int讀寫檔:檔案開啟、寫入、讀取建立和使用Goroutine: go concurrentFunc(i)
Golang 新手疑問集錦:解決常見困擾,邁向精進
作為Golang 的新手,很容易遇到各種問題。本文將透過提供清晰易懂的解決方案來解決一些最常見的困擾,幫助新手邁向精進。
1. 如何定義和初始化結構體?
type Person struct { Name string Age int } p := Person{"John Doe", 30}
2. 如何使用映射(Map)?
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 伺服器:
############################################################func main() { http.HandleFunc("/tasks", createTask) http.HandleFunc("/tasks", getTasks) fmt.Println("Server listening on port 8080") if err := http.ListenAndServe(":8080", nil); err != nil { panic(err) } }
以上是Golang 新手疑問集錦:解決常見困擾,邁向精進的詳細內容。更多資訊請關注PHP中文網其他相關文章!