拉一个单一标准包的副本进行修改

时间:2016-05-14 14:42:28

标签: go package

我有一个想法,我想对数据库/ sql go包进行一些小的添加。我想尝试我的更改,看看它是如何工作的。

我以为我能够执行此命令来获取我可以使用的数据库/ sql中的源代码副本:

go get github.com/golang/go/tree/master/src/database/sql

然后,我将从

更改我的import语句
import "database/sql"

import "github.com/golang/go/tree/master/src/database/sql"

并将调试Printf放在我的本地代码副本中,以确认我刚刚执行的新代码正在执行而不是/ usr / local / go中的代码。

当我尝试上面的“go get”命令时,我收到以下错误消息:

$ go get github.com/golang/go/tree/master/src/database/sql
package github.com/golang/go/tree/master/src/database/sql: cannot find package "github.com/golang/go/tree/master/src/database/sql" in any of:
    /usr/local/go/src/github.com/golang/go/tree/master/src/database/sql (from $GOROOT)
    /Users/me/go/src/github.com/golang/go/tree/master/src/database/sql (from $GOPATH)
$ echo $GOPATH
/Users/me/go
$

为什么这不起作用?

我也尝试使用

中的源代码执行此操作
https://go.googlesource.com/go/+/release-branch.go1.6/src/database/sql

这也不起作用。然后我尝试从上面的链接下载源代码的tgz,并在我自己的$ GOPATH / src / github.com / database / sql文件夹中解压缩这些文件,然后在那里构建它们。这产生了一个运行的sql.a,但没有用。

2 个答案:

答案 0 :(得分:5)

您可以从源代码构建Go,然后在适当的位置修改标准库,也可以提供该特定包。

如果您已从源代码安装Go,则在编辑该软件包后,您可以像使用go install database/sql

的任何其他软件包一样安装新版本

如果将database/sql包复制到vendor目录中,则将构建并导入该副本以代替标准库中的版本。

答案 1 :(得分:0)

正如戈多克所说

get         download and install packages and dependencies

您可以获得包和依赖项。但是你想要一个文件夹!您可以从github下载其zip文件并将其复制到该目的地。如果要查看错误,可以使用错误类型。

例如sql.Open返回* sql.DB,错误

db, err := sql.Open("mysql", "astaxie:astaxie@/test?charset=utf8")
if err != nil {
    fmt.Println(err)
}