如何在新版本的 go 中 import 旧版本的标准库? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
lasuar
V2EX    Go 编程语言

如何在新版本的 go 中 import 旧版本的标准库?

  •  
  •   lasuar 2020-10-14 10:25:45 +08:00 3247 次点击
    这是一个创建于 1868 天前的主题,其中的信息可能已经有所发展或是发生改变。

    方法最好是通用的,不是指某一个 pkg ;

    RT,非常感谢!

    18 条回复    2020-10-14 23:57:39 +08:00
    AmrtaShiva
        1
    AmrtaShiva  
       2020-10-14 10:41:36 +08:00 via Android
    降低版本?
    wleven
        2
    wleven  
       2020-10-14 10:43:21 +08:00
    标准库不是向下兼容的吗?
    ine181x
        3
    ine181x  
       2020-10-14 10:44:01 +08:00
    1.x 的标准库是向下兼容的?
    cloverzrg2
        4
    cloverzrg2  
       2020-10-14 10:46:22 +08:00
    试下这个格式 go get golang.org/x/net v0.0.0-20200116001909-b77594299b42
    cloverzrg2
        5
    cloverzrg2  
       2020-10-14 10:47:07 +08:00
    ppphp
        6
    ppphp  
       2020-10-14 10:52:10 +08:00
    根据最小版本原则,同一个依赖会引用最高版本,要降所有依赖的一起降
    lasuar
        7
    lasuar  
    OP
       2020-10-14 10:53:36 +08:00
    @wleven 目前遇到的问题是 go/ast 这个库 在 go1.15 有问题,调试也没发现问题,只能想到这个办法
    lasuar
        8
    lasuar  
    OP
       2020-10-14 10:53:48 +08:00
    @ine181x 目前遇到的问题是 go/ast 这个库 在 go1.15 有问题,调试也没发现问题,只能想到这个办法
    lasuar
        9
    lasuar  
    OP
       2020-10-14 10:55:40 +08:00
    @cloverzrg2 go/ast 在 x 下面没有的,只有 golang.org/x/tools/go/ast/astutil,这个是 util 来的,也是引用标准库的 ast
    katsusan
        10
    katsusan  
       2020-10-14 12:09:04 +08:00
    标准库默认的是链接$GOROOT/pkg/$GOOS_$GOARCH 下的目标文件,
    比如"import go/ast“的话会链接 /usr/local/go/pkg/linux_amd64/go/ast.a,
    目前没看到链接器有提供选项可以改这个。按我的愚见有两种思路:
    1. git clone 指定版本的 go 源码到 GOPATH/pkg/mod/github.com/golang
    比如 git clone --branch go1.13.1 https://github.com/golang/go %GOPATH%/pkg/mod/github.com/golang
    这样可以 import "github.com/golang/go/src/go/ast"来使用
    2. 在当前项目下用 vendor 管理一个标准库的副本
    Leigg
        11
    Leigg  
       2020-10-14 12:23:18 +08:00 via Android
    @katsusan 那就只能 vender 了
    6ufq0VLZn0DDkL80
        12
    6ufq0VLZn0DDkL80  
       2020-10-14 13:37:39 +08:00
    @lasuar 啥问题,提 issue 了吗
    6ufq0VLZn0DDkL80
        13
    6ufq0VLZn0DDkL80  
       2020-10-14 13:38:23 +08:00
    不要搞黑科技,如果真的有必要就老老实实拷出来当作一个第三方包来维护。
    sunriz
        14
    sunriz  
       2020-10-14 16:15:00 +08:00
    自己 fork 一个再引用
    Mohanson
        15
    Mohanson  
       2020-10-14 16:30:46 +08:00 via Android
    每一个难以理解的问题,细究下来都是典型的 xy 问题

    https://www.jianshu.com/p/bbe05166aa7d

    直接问你发现的 ast 标准库的问题不是更好吗?
    lasuar
        16
    lasuar  
    OP
       2020-10-14 19:38:10 +08:00
    @Mohanson 当然明白你的意思,但查清 /复现具体的问题对我来说目前要花不少时间,我只能基于经验判断并得出一个目前较快解决问题的方案,至于具体的问题,是否真的是标准库 bug 要等到自己有时间才能去查明。
    reus
        17
    reus  
       2020-10-14 23:37:02 +08:00
    对编译器做 git bisect,看看是哪一个 commit 导致的,然后要么改自己代码,要么去 github 提 issue

    标准库 ast 包很少改动,数到第十个 commit 都已经是一年半以前了。而且大多数是改注释
    Yoock
        18
    Yoock  
       2020-10-14 23:57:39 +08:00   1
    不要怀疑标准库,绝大部分情况下是你自己的问题
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3453 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 00:18 PVG 08:18 LAX 16:18 JFK 19:18
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86