The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
freemoon

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

  •  
  •   freemoon · Oct 14, 2020 · 3470 views
    This topic created in 2037 days ago, the information mentioned may be changed or developed.

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

    RT,非常感谢!

    18 replies    2020-10-14 23:57:39 +08:00
    AmrtaShiva
        1
    AmrtaShiva  
       Oct 14, 2020 via Android
    降低版本?
    wleven
        2
    wleven  
       Oct 14, 2020
    标准库不是向下兼容的吗?
    ine181x
        3
    ine181x  
       Oct 14, 2020
    1.x 的标准库是向下兼容的?
    cloverzrg2
        4
    cloverzrg2  
       Oct 14, 2020
    试下这个格式 go get golang.org/x/net v0.0.0-20200116001909-b77594299b42
    cloverzrg2
        5
    cloverzrg2  
       Oct 14, 2020
    ppphp
        6
    ppphp  
       Oct 14, 2020
    根据最小版本原则,同一个依赖会引用最高版本,要降所有依赖的一起降
    freemoon
        7
    freemoon  
    OP
       Oct 14, 2020
    @wleven 目前遇到的问题是 go/ast 这个库 在 go1.15 有问题,调试也没发现问题,只能想到这个办法
    freemoon
        8
    freemoon  
    OP
       Oct 14, 2020
    @ine181x 目前遇到的问题是 go/ast 这个库 在 go1.15 有问题,调试也没发现问题,只能想到这个办法
    freemoon
        9
    freemoon  
    OP
       Oct 14, 2020
    @cloverzrg2 go/ast 在 x 下面没有的,只有 golang.org/x/tools/go/ast/astutil,这个是 util 来的,也是引用标准库的 ast
    katsusan
        10
    katsusan  
       Oct 14, 2020
    标准库默认的是链接$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  
       Oct 14, 2020 via Android
    @katsusan 那就只能 vender 了
    6ufq0VLZn0DDkL80
        12
    6ufq0VLZn0DDkL80  
       Oct 14, 2020
    @lasuar 啥问题,提 issue 了吗
    6ufq0VLZn0DDkL80
        13
    6ufq0VLZn0DDkL80  
       Oct 14, 2020
    不要搞黑科技,如果真的有必要就老老实实拷出来当作一个第三方包来维护。
    sunriz
        14
    sunriz  
       Oct 14, 2020
    自己 fork 一个再引用
    Mohanson
        15
    Mohanson  
       Oct 14, 2020 via Android
    每一个难以理解的问题,细究下来都是典型的 xy 问题

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

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

    标准库 ast 包很少改动,数到第十个 commit 都已经是一年半以前了。而且大多数是改注释
    Yoock
        18
    Yoock  
       Oct 14, 2020   ❤️ 1
    不要怀疑标准库,绝大部分情况下是你自己的问题
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3420 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 76ms · UTC 11:02 · PVG 19:02 · LAX 04:02 · JFK 07:02
    ♥ Do have faith in what you're doing.