gpt4 book ai didi

go - 为什么很多golang项目直接从GitHub导入?

转载 作者:IT王子 更新时间:2023-10-29 02:08:34 25 4
gpt4 key购买 nike

我是 golang 的新手,我想知道为什么很多 golang 项目都这样写他们的源代码:

import  "github.com/stretchr/testify/assert"

如果这个作证 移动到 bitbucket 会怎样?

为什么不像其他语言那样下载 testify 和 import testify

最佳答案

在我回答您的问题之前,您需要了解 golang 管理其包和依赖项的方式。


要下载包,请使用 go get 命令。使用示例:

$ go get github.com/stretchr/testify

以上命令将下载 testify 包,然后将其存储在本地 work space 下其 url 后有结构(TL;DR 工作空间路径已注册为 $GOPATH env 变量)。

$GOPATH/src/github.com/stretchr/testify

An explanation from the doc为什么下载的包名会跟在它的url后面:

Get downloads the packages named by the import paths, along with their dependencies.


现在关于你的问题:

Why does many golang project directly import from GitHub?

声明import "github.com/stretcr/testify/assert" 并不意味着包直接从github网站(通过http)导入。它是从本地导入的,来自 $GOPATH/src 下的 github.com/strethr/testify 路径。该包之前已下载并存储在那里,因此可以将其导入到任何项目中。

以下是来自 documentation 的解释关于导入语句:

The Go path ($GOPATH) is used to resolve import statements.

另请查看下面的一些代码(取 self 的本地代码)。

$ echo $GOPATH
/Users/novalagung/Documents/go

$ go get -u github.com/stretchr/testify
# package will be downloaded into $GOPATH/src folder using the same structure as the github url

$ tree -L 1 $GOPATH/src/github.com/stretchr/testify
/Users/novalagung/Documents/go/src/github.com/stretchr/testify
├── Gopkg.lock
├── Gopkg.toml
├── LICENSE
├── README.md
├── _codegen
├── assert
├── doc.go
├── http
├── mock
├── package_test.go
├── require
├── suite
└── vendor

所以如果你想导入任何包,它必须在 $GOPATH/src 文件夹下。


what if this testify moved to bitbucket?

它对你的本地项目没有影响,因为之前已经下载了所需的包。但是,如果你想更新它,你可能需要更改包路径以遵循它的新 url,可能像 bitbucket.org/stretchr/testify/assert?取决于新的 bitbucket url 是什么样子。

但我不认为 testify 的所有者会这样做,因为它会破坏很多人的代码。

关于go - 为什么很多golang项目直接从GitHub导入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52884836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com