拉取单个go标准包的副本进行修改
Pull a copy of a single go standard package for modification
我想对 database/sql go 包做一些小的补充。我想尝试一下我的改变,看看它是如何工作的。
我认为我可以执行此命令以获取 database/sql 中的源副本,我可以使用它:
go get github.com/golang/go/tree/master/src/database/sql
然后,我打算将我的导入语句从
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
那也没用。然后我尝试从上面的 link 下载源代码的 tgz,并将这些文件解压缩到我自己的 $GOPATH/src/github.com/database/sql 文件夹中,然后在那里构建它们。这产生了 sql.a 运行,但没有用。
正如 Godoc 所说
get download and install packages and dependencies
你只能获取包和依赖项。但是你想要一个文件夹!您可以从 github 下载其 zip 文件并将其复制到该目的地。如果您想查看错误,可以使用错误类型。
例如sql.Openreturns*sql.DB,错误
db, err := sql.Open("mysql", "astaxie:astaxie@/test?charset=utf8")
if err != nil {
fmt.Println(err)
}
您可以从源代码构建 Go,然后就地修改标准库,或者您可以供应特定的包。
如果您从源代码安装了 Go,编辑包后您可以像安装任何其他包一样使用 go install database/sql
安装新版本
如果您将 database/sql
包复制到 vendor
目录中,将构建并导入该副本以代替标准库中的版本。
我想对 database/sql go 包做一些小的补充。我想尝试一下我的改变,看看它是如何工作的。
我认为我可以执行此命令以获取 database/sql 中的源副本,我可以使用它:
go get github.com/golang/go/tree/master/src/database/sql
然后,我打算将我的导入语句从
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
那也没用。然后我尝试从上面的 link 下载源代码的 tgz,并将这些文件解压缩到我自己的 $GOPATH/src/github.com/database/sql 文件夹中,然后在那里构建它们。这产生了 sql.a 运行,但没有用。
正如 Godoc 所说
get download and install packages and dependencies
你只能获取包和依赖项。但是你想要一个文件夹!您可以从 github 下载其 zip 文件并将其复制到该目的地。如果您想查看错误,可以使用错误类型。
例如sql.Openreturns*sql.DB,错误
db, err := sql.Open("mysql", "astaxie:astaxie@/test?charset=utf8")
if err != nil {
fmt.Println(err)
}
您可以从源代码构建 Go,然后就地修改标准库,或者您可以供应特定的包。
如果您从源代码安装了 Go,编辑包后您可以像安装任何其他包一样使用 go install database/sql
如果您将 database/sql
包复制到 vendor
目录中,将构建并导入该副本以代替标准库中的版本。