跑步sudo apt-get install golang-stable,我得到Go版本go1.0.3.有没有办法安装go1.1.1?
我正在尝试安装mgo,这是一个用golang编写的mongo-driver.
标准命令:
go get launchpad.net/mgo
Run Code Online (Sandbox Code Playgroud)
但由于一些证书问题,它失败了.
所以我手动将mgo的源代码下载到本地E:\mgo,但我不知道如何安装它.
文件树:
??.bzr
? ??branch
? ? ??lock
? ??branch-lock
? ??checkout
? ? ??lock
? ??repository
? ??indices
? ??lock
? ??obsolete_packs
? ??packs
? ??upload
??bson
??testdb
Run Code Online (Sandbox Code Playgroud)
我试过了:
cd mgo
go install
Run Code Online (Sandbox Code Playgroud)
它报告:
auth.go:34:2: import "launchpad.net/mgo/bson": cannot find package
Run Code Online (Sandbox Code Playgroud)
但是如果我首先尝试安装bson:
cd bson
go install
Run Code Online (Sandbox Code Playgroud)
它报告了另一个错误:
go install: no install location for _/E_/mgo/bson
Run Code Online (Sandbox Code Playgroud)
那么,安装它的正确命令是什么?
在Golang中,我们可以在GitHub上指定开源库作为依赖项.例如:
import "github.com/RichardKnop/somelibrary"
Run Code Online (Sandbox Code Playgroud)
这将尝试根据您的Go版本查找分支,如果我理解正确,则默认为master.
因此无法导入依赖项的特定版本,例如:
import "github.com/RichardKnop/somelibrary#v1.4.8"
Run Code Online (Sandbox Code Playgroud)
在Go中管理依赖关系的最佳实践是什么?
我可以看到两种方法.
是否为具有重大变化的主要版本创建新模块?
例如,我的Go库可以定义模块v1和v2,那么你可以这样做:
import "github.com/RichardKnop/somelibrary/v1"
Run Code Online (Sandbox Code Playgroud)
要么:
import "github.com/RichardKnop/somelibrary/v2"
Run Code Online (Sandbox Code Playgroud)
根据您的需要.对v1或v2所做的任何更改都不需要破坏任何API或工作功能.
这将使您完全控制Go代码所需的外部依赖项版本.
例如,您可以将github.com/RichardKnop/somelibrary分叉到您自己的GitHub帐户中,然后在您的代码中执行以下操作:
import "github.com/ForkingUser/somelibrary"
Run Code Online (Sandbox Code Playgroud)
然后你必须分叉所有外部依赖,这似乎有点矫枉过正.但是,它可以让您完全控制版本.您可以将叉子保留在您知道正在使用代码的版本中,并且只有在检查新版本的依赖项不会破坏任何内容后才能更新分叉.
思考?
这不是这个问题的重复:
我不想知道价值观应该是什么。我想知道当我输入ls $GOROOT或ls $GOPATH进入控制台时应该看到什么。我很确定我在大约一年前按照教程设置了错误,并且我希望能够通过简单地检查它们指向的内容是否正确来确认这两个指向它们应该指向的位置。
这就是我现在所在的地方。看起来好像$GOROOT没有指向任何地方。我很确定它应该指向,但如果我知道 的预期结果应该是usr/local/go什么,确认会容易得多。ls $GOROOT
至于$GOPATH我不完全确定我的“工作空间”是否是我所有的 go 代码所在的位置,或者可能只是 github 的东西,或者可能是我正在其中工作的特定文件夹。我知道它应该指向我的“工作空间”,但我不知道我正在寻找的工作空间是什么样的。
Sephs-MBP:ThumbzArt seph$ $GOROOT
Sephs-MBP:ThumbzArt seph$ $GOPATH
-bash: /Users/seph/code/golang: is a directory
Sephs-MBP:ThumbzArt seph$ ls $GOROOT
Bman.jpg README.md ThumbzArt.sublime-workspacescripts thumbzart.go
LICENSE.md ThumbzArt.sublime-project public templates ticktock.go
Sephs-MBP:ThumbzArt seph$ $GOPATH
-bash: /Users/seph/code/golang: is a directory
Sephs-MBP:ThumbzArt seph$ ls $GOPATH
- bin p pkg src
Sephs-MBP:ThumbzArt seph$ ls /usr/local/go
AUTHORS CONTRIBUTORS PATENTS VERSION bin doc lib pkg …Run Code Online (Sandbox Code Playgroud) 我是一个新的golang开发人员,我想知道为什么$GOPATH需要在我的项目的根目录设置环境变量.
如果我同时处理几个项目,我每次都需要重新设置$GOPATH环境变量以指向不同的位置.
在我的设置中,我已经$GOPATH设置为/Users/Projects/go/lib.这是我所有golang项目的通用目录.
只是为了澄清:项目数据被放入 /Users/Projects/go/<Project Name>
如果无论如何所有$GOPATH用于(据我所知)是安装第三方库,为$GOPATH我的所有项目都有一个目录是不安全的,所以所有必需的第三方库都安装在同一个lib目录中,并且每当我编译项目时,它只使用它所需的库.
这在练习中是不是很糟糕?为什么?
刚开始学习Go(人们会说"Go"还是"Golang"?)
我得到了hello world示例运行.我设置了GOROOT和GOPATH.
现在我想做一些更先进的事情,例如打开csv文件,我在这里找到了一个教程
为了使这个脚本工作,我需要导入的包,例如"bufio","encoding/csv"等.
我是否必须手动搜索https://github.com/golang/go/wiki/Projects或其他一些存储库,下载并解压缩到我的GOPATH"pkg"目录中?
或者Go/Golang是否有相当于Python的"pip install"的东西可以为我做这个?
import (
"bufio"
"encoding/csv"
"os"
"fmt"
"io"
)
func main() {
// Load a TXT file.
f, _ := os.Open("C:\\Users\\bb\\Documents\\Dropbox\\Data\\bc hydro tweets\\bchtweets.csv")
// Create a new reader.
r := csv.NewReader(bufio.NewReader(f))
for {
record, err := r.Read()
// Stop at EOF.
if err == io.EOF {
break
}
// Display record.
// ... Display record length.
// ... Display all individual elements of the slice.
fmt.Println(record)
fmt.Println(len(record))
for value …Run Code Online (Sandbox Code Playgroud) 谁能解释一下何时设置 $GOPATH?我知道它位于默认位置 C:\Users\Username\go 中,但是如果我的所有编码项目都位于 Z:<codelocation> 中怎么办?
我正在尝试安装 Go 包,但出现以下错误。
这是我的 GOPATH
p@p-ubuntu:~/ba/docker-lvm-plugin$ echo $GOPATH
/usr/bin/go
Run Code Online (Sandbox Code Playgroud)
包安装
p@p-ubuntu:~/ba/docker-lvm-plugin$ go get github.com/Sirupsen/logrus
package github.com/Sirupsen/logrus: mkdir /usr/bin/go: not a directory
Run Code Online (Sandbox Code Playgroud)