golang吧 关注:6,597贴子:14,840
  • 11回复贴,共1

新人看《go程序设计语言》/《go语言圣经》的一些注意事项

只看楼主收藏回复

这本书作为经典的大头书确实不错,但由于出版时间较早又没有新版,所以有一些过时的地方。我说一些我学的时候踩的坑,剩下的欢迎各位吧友补充


IP属地:广东来自Android客户端1楼2025-08-19 07:19回复
    1.首先第一个问题也是最严重的问题就是书里采用的是过时的gopath的方式,但现在使用的是go modules。所以学之前先简单学一些go mod的使用,gopath的内容可以全部跳过


    IP属地:广东2楼2025-08-19 07:26
    回复
      2026-06-09 19:55:37
      广告
      不感兴趣
      开通SVIP免广告
      2.错误处理,现在新加了erros.Is和errors.As这两种错误处理方式,不过这个影响不大


      IP属地:广东3楼2025-08-19 07:27
      回复
        3.没有介绍context包的内容,这部分的内容去文档简单看一下就可以了


        IP属地:广东4楼2025-08-19 07:28
        回复
          4.任意类型使用的是interface{},不是any。interface{}和any其实就是一个东西,都可以只是any更方便一点


          IP属地:广东5楼2025-08-19 07:30
          回复
            5.没有介绍泛型,因为当时没有泛型,现在有了。使用方法和其他语言也差不多,简单看一下了解一下就可以


            IP属地:广东6楼2025-08-19 07:31
            回复
              6.没有介绍embed的相关内容,这个内容主要是嵌入文件的,方便你使用一些静态文件,要不你程序里使用某些文件要在特定的工作路径下执行命令才可以。


              IP属地:广东7楼2025-08-19 07:34
              回复
                7.我印象中还有一些过时的注意事项,像是在for循环内使用闭包函数的注意事项,现在已经不需要注意了。
                原先在这个函数内使用类似的lambda函数会因为闭包发生捕获问题
                for i := 0; i < 3; i++ {
                go func() {
                fmt.Print(i)
                }()
                }
                会打印333,现在正常了打印123


                IP属地:广东8楼2025-08-19 07:43
                收起回复
                  2026-06-09 19:49:37
                  广告
                  不感兴趣
                  开通SVIP免广告
                  我有印象的大概这些,其实这些问题除了1的那个问题外都是小问题,可以先不用去管


                  IP属地:广东9楼2025-08-19 07:45
                  回复
                    补充点调库会遇到坑
                    一 如果你的go版本低于1.21 不支持slices包操作,点名批评yaml v3
                    二 如果仓库要求版本低于1.18 不要使用泛型
                    三 如果使用cgo库 一定要自己看看makefile规则怎么定义的,最后把c库拉下来自己编译,有些cgo库写的是真垃圾


                    IP属地:北京来自Android客户端10楼2025-08-19 09:27
                    回复