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

Go 环境版本管理用哪个- -有点疑惑

  •  
  •   wispmagical · 24 天前 · 2425 次点击

    我现在了解下来有一堆版本管理

    1. GVM
    2. GOENV
    3. asdf

    我问 GPT ,说 GVM 已经淘汰了。。。 真的是这样嘛- -有没有 go 大佬来推荐和讲解一下。。。有点迷

    36 条回复    2025-12-01 13:56:16 +08:00
    justseemore
        1
    justseemore  
       24 天前
    基本上可以做到向上兼容, 用啥版本管理啊.
    wispmagical
        2
    wispmagical  
    OP
       24 天前
    开发环境。。。我还是想保持统一的- -
    @justseemore
    looplj
        3
    looplj  
       24 天前
    我用 goup
    Nanosk
        4
    Nanosk  
       24 天前
    goup 环境变量指到~/.go/current 就行
    guagecool
        5
    guagecool  
       24 天前
    skywalker1014
        6
    skywalker1014  
       24 天前
    我还在用 gvm ,感觉还行吧
    Seck
        7
    Seck  
       24 天前
    不重要 🤣
    个人观点(有啥用啥)
    snxq1995
        8
    snxq1995  
       24 天前   ❤️ 1
    asdf 无脑什么语言都一把唆~
    mwjz
        9
    mwjz  
       24 天前
    asdf +1 虽然我是前端开发。
    cccvno1
        10
    cccvno1  
       24 天前
    mise
    vultr
        11
    vultr  
       24 天前
    go 不是默认就支持不同版本了吗?
    ratazzi
        12
    ratazzi  
       24 天前
    mise
    hailaz
        13
    hailaz  
       24 天前
    还有个叫 vmr ,但是 vscode 自带版本管理了不需要了吧
    https://github.com/gvcgo/version-manager/blob/main/docs/readmeCN.md
    SethShi
        14
    SethShi  
       24 天前
    在用 vfox
    ryan961
        15
    ryan961  
       24 天前
    在用 asdf ,配置起来还是有点麻烦的。感觉可以直接使用 GoLand 中自带的 go sdk 就够用了
    Reficul
        16
    Reficul  
       24 天前
    现在 golang 高版本的 gomod 里可以申明 toolchain 版本。

    当然,我现在参与的项目的版本还不支持这个功能。升级是不可能升级的,这辈子都不可能升级的。
    THESDZ
        17
    THESDZ  
       24 天前
    vfox
    THESDZ
        18
    THESDZ  
       24 天前
    treblex
        19
    treblex  
       24 天前 via iPhone
    go download 以后有一个别名可执行文件
    我没切换过
    kiritoxkiriko
        20
    kiritoxkiriko  
    PRO
       24 天前
    g
    gongym
        21
    gongym  
       24 天前
    go 不用版本管理吧
    不是兼容的吗,无脑用最新的就行了
    geminikingfall
        22
    geminikingfall  
       24 天前
    话说不是跟生产环境搞成一样的不就完事了吗?理论上不会有问题吧。
    Jinvic
        23
    Jinvic  
       24 天前
    vfox +1
    用一个版本管理器管理所有语言挺方便的。
    Binwalker
        24
    Binwalker  
       24 天前
    mise 秒了,所有都用这个
    craftsmanship
        25
    craftsmanship  
       24 天前 via Android
    mise
    Reficul
        26
    Reficul  
       24 天前   ❤️ 2
    @gongym 兼容说是兼容,可这不是理想情况吗。

    按照 Hyrum’s Law ,实际上你已经依赖了 Go 内部的非公开实现,而你永远不知道你的同事和你依赖的库有什么骚操作。这样的例子其实有很多:
    1. 依赖反射和 unsafe ,这些库不保证行为兼容。unsafe 就不说了。reflect 更隐蔽,比如`reflect.DeepEqual` 的行为变过。你用高版本的 Go 去编译老版本不带修复的 K8s ,你会发现一堆 CR 提交不上去。
    2. 依赖黑魔法注解,一堆库被 rcs 在 Go 源码里拉耻辱柱群,这些库多半你用过:containerd 、protobuf 、sonic ;有一些改了退群了,有一些一直还在。
    3. 你依赖了 golang.org/x 下面的库,这玩意的版本很玄学,兼容性就更别说了。
    Cusox
        27
    Cusox  
       24 天前
    mise
    EricXuu
        28
    EricXuu  
       24 天前 via Android
    之前好几个语言版本的管理器,全换 mise 了,好用
    jqtmviyu
        29
    jqtmviyu  
       24 天前
    mise, 因为还可以管理 node, python, uv 等.
    rarpainting
        30
    rarpainting  
       23 天前
    @Reficul 还以为你拿 cgo 举例,如果是这玩意的话的确一辈子都没有升级的希望了
    但是你说的这些只是验证时间长度和方案选取的区别,另外升的越晚技术债积的越多
    Reficul
        31
    Reficul  
       23 天前
    @rarpainting

    是咯,越老越复杂的严肃项目,就越不敢动。。。
    lysShub
        32
    lysShub  
       21 天前
    go 向下兼容的,开发业务不需要版本管理,直接安最新版
    pike0002
        33
    pike0002  
       20 天前
    gvm 问题不大
    liulaomo
        34
    liulaomo  
       11 天前
    liulaomo
        35
    liulaomo  
       11 天前
    @lysShub 并不
    maskwang
        36
    maskwang  
       6 天前
    gvm 一直在用, 挺好用的
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   5807 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 01:59 · PVG 09:59 · LAX 17:59 · JFK 20:59
    ♥ Do have faith in what you're doing.