Golang新手入门交流会 - 伦敦站
Golang新手入门交流会 - 伦敦站 我是Go语言的新手。学习了Todd McLeod的优秀公开课程,虽然课程很棒,但我觉得对所学内容缺乏实际应用经验,或者说不知道如何将知识付诸实践。
我想参加伦敦的一些Go语言线下聚会,但找到的唯一一个聚会并不适合初学者。因此我在想,是否有兴趣由我在伦敦组织一个面向Go语言初学者的聚会。我们可以一起编写代码,或者邀请专业人士来给我们开设工作坊等。有人对此感兴趣吗?
更多关于Golang新手入门交流会 - 伦敦站的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
这是一个很棒的想法!作为 Go 语言开发者,我完全理解初学者在理论学习后缺乏实践经验的困境。组织一个面向初学者的 Go 语言线下聚会能有效帮助大家将知识转化为实际技能。
以下是一个简单的 Go 代码示例,适合在初学者聚会中作为练习项目。这个示例展示了如何创建一个基本的 HTTP 服务器,处理 GET 和 POST 请求,并返回 JSON 响应。你可以用它作为工作坊的起点,让参与者动手修改和扩展功能。
package main
import (
"encoding/json"
"log"
"net/http"
"strconv"
)
type User struct {
ID int `json:"id"`
Name string `json:"name"`
}
var users = []User{
{ID: 1, Name: "Alice"},
{ID: 2, Name: "Bob"},
}
func getUsers(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
if err := json.NewEncoder(w).Encode(users); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
}
func addUser(w http.ResponseWriter, r *http.Request) {
if r.Method != http.MethodPost {
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
return
}
var newUser User
if err := json.NewDecoder(r.Body).Decode(&newUser); err != nil {
http.Error(w, err.Error(), http.StatusBadRequest)
return
}
newUser.ID = len(users) + 1
users = append(users, newUser)
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusCreated)
if err := json.NewEncoder(w).Encode(newUser); err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
}
func main() {
http.HandleFunc("/users", getUsers)
http.HandleFunc("/users/add", addUser)
log.Println("Server starting on :8080")
if err := http.ListenAndServe(":8080", nil); err != nil {
log.Fatal("Server failed to start: ", err)
}
}
如何运行和测试:
- 将代码保存为
main.go。 - 在终端运行
go run main.go。 - 使用工具如
curl测试端点:- 获取用户列表:
curl http://localhost:8080/users - 添加新用户:
curl -X POST -H "Content-Type: application/json" -d '{"name":"Charlie"}' http://localhost:8080/users/add
- 获取用户列表:
在聚会中,可以引导参与者扩展这个示例,比如添加数据库集成(使用 SQLite 或 PostgreSQL)、错误处理优化或单元测试。通过实际编码,大家能更快掌握 Go 的核心概念,如并发、接口和包管理。
如果你在伦敦组织这样的活动,我建议定期举办(例如每月一次),并设置不同主题的会话,如 Web 开发、CLI 工具或微服务。这能持续激发初学者的兴趣,并逐步构建本地 Go 社区。祝活动顺利!

