Golang语言使用体验与评价探讨
Golang语言使用体验与评价探讨 你会给以下人群什么建议:
- 任何刚开始学习(我的意思是正在学习)Go语言的人。
- 任何想用Go语言从事后端开发的人。
- 寻求以Go语言为职业,或者特别是想用它来谋生的人。
谢谢。
感谢回复。关于第二个选项,我认为任何为了Web开发而学习Go语言的人,肯定都是在做后端开发。Go语言是否曾用于前端开发呢?
我记得读到过一些关于Go语言对GUI或类似方面支持有限的内容?是否有用于前端的框架或库呢?谢谢。
如果你了解其他编程语言,可以轻松学会Go。关键是要专注学习并付诸实践。 2- 据我所知,Go主要用于后端开发。 3- Go与其他语言类似,但我建议也学习更多语言。这将使你在市场上成为一名多才多艺且具有竞争力的开发者。
感谢您的有益回复。是的,我完全致力于使用 Golang 进行后端开发。目前正在做我的第一个项目,一个论坛 Web 应用的后端。
工作确实非常重要,是的,那是最终目标(为了进一步发展)。
如果不过分的话,我希望在这条路上能得到一些指导,我知道导师在职业道路上是多么重要。如果您愿意指导我,我将不胜感激。谢谢。
Oluwatobi_Giwa:
如果这个请求不算过分的话,我希望在这条路上能得到一些指导。我知道在职业道路上,一位老师是多么重要。如果您愿意接纳我,我将非常感激。谢谢。
那么,你具体希望得到什么样的指导呢?你可以在论坛发帖时随时@我,我会尽力回复。我认为最重要的一点是:持续前进并不断编写代码。你写下的每一行代码,你阅读的他人代码的每一行,你提交或审查的每一个拉取请求,都会让你成为一名更优秀的开发者。
你会给以下人群什么建议?
- 任何刚刚接触(我指的是正在学习)Go语言的人。
在我看来,Go语言从其他语言继承了很多东西。如果你有其他开发背景,学习起来会相当容易。但映射、切片和接口的语法仍然是我关注的重点。所以,这可能是我给新开发者的首要学习建议。
- 任何想用Go语言进行后端开发的人。
看看使用Go的全栈方案。
- 寻求以Go语言谋生或特别是维持生计的人。
就像对待任何语言一样。专注于你能为客户或客户的客户做什么。忘掉工具本身。
Oluwatobi_Giwa:
Golang 是否曾用于前端开发?
根据我的专业经验,没有。虽然存在一些前端工具包,但我尚未参与过使用 Go 进行前端开发的项目,因为市面上已有许多成熟且强大的选择,例如 Web 框架(Preact、Angular、Vue 等)、Flutter、React Native 等。话虽如此,我确实在个人项目中用 Go 构建过用户界面。但如果你是为了找工作,不要专注于用 Go 来构建 UI。应该专注于构建 RESTful API。
关于第二个选项,我认为任何为了Web开发而学习Go语言的人,肯定是在做后端。Go语言到底有没有被用于前端呢?
我记得读过一些关于Go语言对GUI或类似东西支持很少的内容?是否有用于前端的框架或库。谢谢。
对我来说,前端涵盖了从React到Go模板的一切。我正在使用Go的HTML模板,我认为这属于“前端”。
基本上,Angular(WordPress / Drupal等)中的所有GUI都是包含Javascript、CSS和HTML等的库。所有这些“东西”你都可以在没有框架的情况下完成,但这并不神奇,因此也更困难。
将Angular和Go作为框架进行比较,我发现它们相当相似。但在我测试时,Go的速度快了一倍。我测试过的所有框架都包含大量永远用不到的东西,这导致了应用程序变得更大更慢。
我认为Go是一种具备前端能力的后端语言。
对于正在学习Go语言的人,建议从官方文档和《The Go Programming Language》开始,重点理解并发模型(goroutine/channel)、接口和错误处理。例如,学习使用goroutine时:
package main
import (
"fmt"
"time"
)
func worker(id int, jobs <-chan int, results chan<- int) {
for j := range jobs {
fmt.Printf("worker %d processing job %d\n", id, j)
time.Sleep(time.Second)
results <- j * 2
}
}
func main() {
jobs := make(chan int, 100)
results := make(chan int, 100)
for w := 1; w <= 3; w++ {
go worker(w, jobs, results)
}
for j := 1; j <= 5; j++ {
jobs <- j
}
close(jobs)
for r := 1; r <= 5; r++ {
<-results
}
}
对于后端开发者,建议掌握标准库的net/http、database/sql和encoding/json。构建REST API时:
package main
import (
"encoding/json"
"log"
"net/http"
)
type User struct {
ID int `json:"id"`
Name string `json:"name"`
}
func usersHandler(w http.ResponseWriter, r *http.Request) {
users := []User{
{ID: 1, Name: "Alice"},
{ID: 2, Name: "Bob"},
}
w.Header().Set("Content-Type", "application/json")
json.NewEncoder(w).Encode(users)
}
func main() {
http.HandleFunc("/users", usersHandler)
log.Fatal(http.ListenAndServe(":8080", nil))
}
对于职业开发者,建议深入理解性能优化和系统设计。例如使用pprof进行性能分析:
package main
import (
"log"
"net/http"
_ "net/http/pprof"
"time"
)
func heavyTask() {
for i := 0; i < 1000000; i++ {
_ = make([]byte, 1024)
time.Sleep(time.Microsecond)
}
}
func main() {
go func() {
for {
heavyTask()
}
}()
log.Fatal(http.ListenAndServe("localhost:6060", nil))
}
运行后访问http://localhost:6060/debug/pprof/可查看性能数据。同时建议研究Go运行时源码,参与开源项目如Docker、Kubernetes,这些项目展示了Go在生产环境中的最佳实践。


