V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
junwind
V2EX  ›  Go 编程语言

目前 golang 环境的正确搭建姿势是什么?

  •  
  •   junwind · 32 天前 · 4800 次点击
    这是一个创建于 32 天前的主题,其中的信息可能已经有所发展或是发生改变。

    为什么我看到还有很多教程都是基于 gopath 的, 一上来就是配置 goroot ,gopath ,创建固定的目录 pkg ,src ,。。。

    大家一般的 go 开发环境怎么搭建呢。项目中的依赖是怎么处理呢?

    52 条回复    2025-03-30 13:55:55 +08:00
    EricYuan1
        1
    EricYuan1  
       32 天前
    cy
    NX2023
        3
    NX2023  
       32 天前 via iPhone   ❤️ 1
    靠 GoLand 自己管理,本地不用手动装,直接 GoLand 里面下
    cyrivlclth
        4
    cyrivlclth  
       32 天前   ❤️ 1
    你的教程是不是太老了?一般 goland ,没有 goland 也是装好 go 之后直接 mkdir 一个文件夹,然后这个文件夹就是你的项目路径了,go mod init 一下不就行了。。。
    ym1ng
        5
    ym1ng  
       32 天前
    go mod
    seth19960929
        6
    seth19960929  
       32 天前   ❤️ 2
    1. 安装 golang (放入环境变量)
    2. 用 gomod, 抛弃所有 goroot, gopath, 已经没人用了(pkg, src)
    ninjashixuan
        7
    ninjashixuan  
       32 天前
    go path 怕不是好多年前的教程了。
    junwind
        8
    junwind  
    OP
       32 天前
    @seth19960929 谢谢,可能是有些教程比较老吧,总是要扯什么 gopath 要配置,要按格式创建目录。
    clino
        9
    clino  
       32 天前
    有个 goenv ,和 Python 的 pyenv 类似,可以用这个切换不同的 go 版本
    Trim21
        10
    Trim21  
       32 天前   ❤️ 1
    按照我的理解,golang 的想法是开发者不要自己管理工具链的版本,随便装一个足够新的 go (>= 1.21 ),然后让 go 自己根据对应项目的 go.mod 下载使用对应版本的工具链。
    linuxsuren
        11
    linuxsuren  
       31 天前
    Goland 安装后啥都不用管,点点点。参与开源项目还能拿到免费的 License
    https://github.com/LinuxSuRen/api-testing
    pike0002
        12
    pike0002  
       31 天前
    建议可以的话:
    1. 装 gvm ,便于多版本 go 管理,对于一些特性测试或者多项目的情况比较好。尤其适合要在不同版本间测试同一个特性不同版本间表现时,比如 go 的 for-range 变更。https://www.pixelstech.net/article/1732171804-fix-for-range-issue-again-in-go-1-22?lang=chinese
    2. 项目建在哪不是很重要,建议项目用 go mod 管理,这样的话依赖管理也比较好搞。
    pkoukk
        13
    pkoukk  
       31 天前
    唯一指定包管理模式:go mod
    (其实极少部分情况会用 go vendor)
    8355
        14
    8355  
       31 天前
    @junwind 那都是 2015 年前后的事了。。。框架还是教 beego 是吧
    IDAEngine
        15
    IDAEngine  
       31 天前
    golang 自带 go mod
    tairan2006
        16
    tairan2006  
       31 天前
    go mod init

    一般用最新版 go 就行,除非你依赖了一些奇奇怪怪的库
    NessajCN
        17
    NessajCN  
       31 天前   ❤️ 1
    sudo pacman -S go 呗, 还要咋样

    你在墙内就再加两句
    go env -w GO111MODULE=on
    go env -w GOPROXY=https://goproxy.cn,direct
    THESDZ
        18
    THESDZ  
       31 天前   ❤️ 1
    wentx
        19
    wentx  
       31 天前
    brew install go

    mkdir myfxckproject && cd myfxckproject
    go mod init ...
    ScepterZ
        20
    ScepterZ  
       31 天前
    安装之后 go env -w 那么几条就行了
    主要是 goproxy 还有 1.21 之后的 toolchain ,1.21 之后也不需要上边说的 gvm 之类的了
    geekzhu
        21
    geekzhu  
       31 天前
    Felldeadbird
        22
    Felldeadbird  
       31 天前
    win 下我是这样。linux 随便一个目录。
    fffq
        23
    fffq  
       31 天前
    只能说教程太老,没必要看了
    jackmod
        24
    jackmod  
       31 天前
    不使用 GPU 的话直接用 docker 简单粗暴
    windows 下的 docker 没法用内存来扩展显存
    zfabl
        25
    zfabl  
       31 天前
    推荐[mise]( https://github.com/jdx/mise) , 可以管理很多开发工具的版本
    ziyeziye
        26
    ziyeziye  
       31 天前
    直接下载 go 安装包,用 go mod init 开搞就行了,最多配一个 gopath
    bintianbaihua
        27
    bintianbaihua  
       31 天前
    直接 go mod 管理就好了。 安装 go 环境,随便选择一个目录即可。 然后 vscode 安装 go 插件,就可以了。
    hzzhzzdogee
        28
    hzzhzzdogee  
       31 天前
    还在 gopath, 19 年 gomod 实验性支持后就再没理会 gopath 这些配置了
    gam2046
        29
    gam2046  
       31 天前
    一般是 VS Code + Dev Container ,不同项目也可以比较方便的用不同版本。

    容器内 go mod init 就可以开始写代码了。
    ziyeziye
        30
    ziyeziye  
       31 天前
    配置 gopath 是自己确定包文件存放在哪个盘的,不然都存 c 盘去了,当然用 linux 和 mac 就不用管了,安装包下了直接就开写
    seers
        31
    seers  
       31 天前 via Android
    自己写 init ,导入就 tidy 下
    Ipsum
        32
    Ipsum  
       31 天前
    Go.dev 解压了,配置 path 不就用了?
    zxjxzj9
        33
    zxjxzj9  
       31 天前
    win 下才需要,mac 和 linux 都是直接装 装完 go mod init go mod tidy 就搞定
    xpzouying
        34
    xpzouying  
       31 天前
    现在的 Golang 不需要配置 GOPATH 之类的环境变量,
    按照官方教程下载 Golang 即可,Linux/Mac 都是下载压缩包解压缩到 /usr/local/go 中,然后把 /usr/local/go/bin 加入到 PATH 环境变量即可。

    推荐一个自己写的常用 HTTP Server 的模板,可以按照这个快速创建一个 Go 的 HTTP Server (基于 Gin ),
    https://github.com/xpzouying/go-template
    iyaozhen
        35
    iyaozhen  
       31 天前
    看到说 gopath 赶紧❌掉,基本上都是老掉牙的教程

    最简单的就是打开 GoLand ,直接用
    ota
        36
    ota  
       31 天前
    conda
    vincentWdp
        37
    vincentWdp  
       31 天前
    FrankAdler
        38
    FrankAdler  
       31 天前
    1. 官方下载 go 安装包,解压到喜欢的路径,然后把 bin 目录加入到 PATH 里,保证能不加路径直接执行`go`,

    2. 执行 go env ,根据需要调整其中的几个变量,一般在 bashrc 或者 profile 里自定下比如 GOPATH 、GOPRIVATE 、GOPRIVATE 、GOCACHE 、GOPROXY 这几个就够了
    theoriz
        39
    theoriz  
       31 天前
    devcontainer
    noyidoit
        40
    noyidoit  
       31 天前
    不需要配置,直接 go mod init/tidy

    多版本并存也不需要 gvm ,直接 go install +go download ,参考 https://go.dev/doc/manage-install
    me1onsoda
        41
    me1onsoda  
       31 天前
    现在不是 go mod 吗
    wjx0912
        42
    wjx0912  
       31 天前
    mac: brew install go
    windows: winget install --id GoLang.Go
    linux: apt install golang-go
    lsilencej
        43
    lsilencej  
       31 天前   ❤️ 1
    jtsang
        44
    jtsang  
       31 天前
    mise 一把梭
    hpu423
        45
    hpu423  
       31 天前
    打开 powershell (管理员权限)执行
    @powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin

    choco install golang
    choco install nodejs
    choco install yarn
    lvlongxiang199
        46
    lvlongxiang199  
       31 天前
    同意 @NessajCN 的观点. OP 估计是个初学者, 别整那么多花里胡哨的, 先装上最新的 golang 就行, gvm 就算了吧, 估计也用不到多个 golang 版本
    Nazz
        47
    Nazz  
       30 天前
    首先安装或者直接解压编译器, 然后配置 GOROOT, GOPATH, GOPROXY, 把 $GOROOT/bin 和 $GOPATH/bin 加入 $PATH
    fenghuang
        48
    fenghuang  
       30 天前 via Android
    不设置 gopath ,go mod 下载的依赖放在哪里?
    zaunist
        49
    zaunist  
       30 天前
    @junwind 恭喜你获得了上古秘籍,如今武林中人已经几乎无人再会此绝技,待你习成即可称霸武林!
    SGL
        50
    SGL  
       5 天前
    据我目前的了解,GOPATH 还是可以配置的,这个可以的意思就是“非必须”。如果不配置 GOPATH ,go mod init 以及 go install 下来的依赖或者可执行文件都会存储到$HOME/go/ 这个目录下面,在 Mac 和 Linux 你会在的 home 目录看到一个 go 的目录。Win 不知道,没有在 win 环境下搞过。
    SGL
        51
    SGL  
       5 天前
    https://go.dev/wiki/GOPATH 。看下这个你就知道了,虽然说无脑不用管,但是还是可以看下这个环境变量到底起什么作用,以及缓存到底去哪儿看,心里有数。
    SGL
        52
    SGL  
       5 天前
    @SGL https://pkg.go.dev/cmd/go#hdr-GOPATH_environment_variable
    还有这里的说明。 二手博客资料入门后,官方文档永远是最好的教程。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2336 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 02:21 · PVG 10:21 · LAX 19:21 · JFK 22:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.