从零到初级开发者:5个Go项目,让你的作品集大放异彩

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

为什么Go是您进入后端世界的黄金门票

\n

如果您正在阅读这篇文章,那么您可能已经知道Go (Golang)不仅仅是一种时髦的语言。它是编写Docker、Kubernetes、Prometheus以及现代互联网一半基础设施的语言。但您知道优秀开发者与新手之间的区别吗?不是语法知识,而是Go语言的真实作品集项目。

\n

雇主们已经厌倦了千篇一律的React待办事项列表。他们需要的是理解goroutine、能够设计API并且不畏惧网络工作的人。在本文中,我们不仅会列出想法——我们还将解析5个包含真实代码片段的项目,这些项目将覆盖面试中90%的问题。开始吧!

\n\n

项目1:用于缩短链接的RESTful API(URL Shortener)

\n

为什么这很重要?

\n

这是经典项目。任何后端开发者都应该能够启动HTTP服务器,处理中间件和路由。链接缩短项目非常适合Go语言作品集项目,因为它可以展示您对结构、哈希和数据库工作的理解。

\n\n

我们将编写什么?

\n

我们将创建一个简单的服务器,使用net/http(不使用第三方库,以展示对标准库的掌握)。服务器将接收长URL并返回短代码(例如/abc123)。

\n\n
package main\n\nimport (\n    "crypto/rand"\n    "encoding/hex"\n    "encoding/json"\n    "fmt"\n    "net/http"\n    "sync"\n)\n\ntype URLStore struct {\n    mu   sync.RWMutex\n    data map[string]string\n}\n\nvar store = URLStore{data: make(map[string]string)}\n\nfunc generateShortID() string {\n    bytes := make([]byte, 4)\n    rand.Read(bytes)\n    return hex.EncodeToString(bytes)\n}\n\nfunc shortenHandler(w http.ResponseWriter, r *http.Request) {\n    if r.Method != http.MethodPost {\n        http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)\n        return\n    }\n\n    var req struct {\n        URL string `json:"url"`\n    }\n    if err := json.NewDecoder(r.Body).Decode(&req); err != nil {\n        http.Error(w, "Bad request", http.StatusBadRequest)\n        return\n    }\n\n    shortID := generateShortID()\n    store.mu.Lock()\n    store.data[shortID] = req.URL\n    store.mu.Unlock()\n\n    w.Header().Set("Content-Type", "application/json")\n    json.NewEncoder(w).Encode(map[string]string{\n        "short_url": fmt.Sprintf("http://localhost:8080/%s", shortID),\n    })\n}\n\nfunc redirectHandler(w http.ResponseWriter, r *http.Request) {\n    shortID := r.URL.Path[1:]\n    store.mu.RLock()\n    originalURL, ok := store.data[shortID]\n    store.mu.RUnlock()\n\n    if !ok {\n        http.NotFound(w, r)\n        return\n    }\n    http.Redirect(w, r, originalURL, http.StatusFound)\n}\n\nfunc main() {\n    http.HandleFunc("/shorten", shortenHandler)\n    http.HandleFunc("/", redirectHandler)\n    fmt.Println("Server started at :8080")\n    http.ListenAndServe(":8080", nil)\n}
\n\n

您将提升什么?

\n
    \n
  • 使用sync.RWMutex进行并发访问
  • \n
  • JSON序列化
  • \n
  • 无框架的整洁架构
  • \n
\n

这个Go作品集项目将展示您理解事物“底层”工作原理。

\n\n

项目2:系统监控CLI工具

\n

为什么放在作品集中?

\n

Go以其命令行工具而闻名。编写自己的top或htop是展示系统调用和goroutine工作的绝佳方式。这是最有用的Go作品集项目之一,因为它接近真实的DevOps任务。

\n\n

代码:CPU和内存监控

\n
package main\n\nimport (\n    "fmt"\n    "os"\n    "os/exec"\n    "strconv"\n    "strings"\n    "time"\n)\n\nfunc getCPUPercent() (float64, error) {\n    out, err := exec.Command("sh", "-c", "t                

博客

书籍推荐