1、go get -v 出现问题
例如:
can't load package: package .: no Go files in C:\Users\nick
无法加载包:package :无可构建Go源文件
解决办法
1、
我必须指定一个更具体的子包来安装。
错误:
go get github.com/garyburd/redigo
正确:
go get github.com/garyburd/redigo/redis
2、
也可能说此命令不在此目录下。
2、引入库报错
例如:
解决办法
需要翻墙或者找到网速快的地方进行拉取依赖
D:\go\chat-master\chat\hello>go get github.com/go-xorm/xorm
3、安装依赖库
首先下载go的依赖库,通过git下载:git clone https://github.com/golang/tools.git tools
然后通过命令进行安装
go install github.com/ramya-rao-a/go-outline
go install github.com/acroca/go-symbols
go install golang.org/x/tools/cmd/guru
go install golang.org/x/tools/cmd/gorename
go install github.com/josharian/impl
go install github.com/rogpeppe/godef
go install github.com/sqs/goreturns
go install github.com/golang/lint/golint
go install github.com/cweill/gotests/gotests
go install github.com/ramya-rao-a/go-outline
go install github.com/acroca/go-symbols
go install golang.org/x/tools/cmd/guru
go install golang.org/x/tools/cmd/gorename
go install github.com/josharian/impl
go install github.com/rogpeppe/godef
go install github.com/sqs/goreturns
go install github.com/golang/lint/golint
go install github.com/cweill/gotests/gotests
4、go build、go install与go get 有什么区别
go build:在当前目录下生成可执行文件,注意:go build指令会调用所有引用包的源码,重新编译,而不是直接使用pkg里的编译后的文件,如果在$GOROOT或者$GOPATH下没有找到import引入的项目源码,就会报错。
go install:编译源代码,如果为可执行文件(package "main"且包含main方法),则会编译生成可执行文件到$GOPATH\bin目录下,可执行文件import引入其他包,就会被编译到$GOPATH/pkg/$GOOS_$GOARCH目录下。
go get:git clone到$GOPATH\src + go install
5、创建的链接,使用完要关闭
for {
client, err := rpc.Dial("tcp", info.RpcAddr[0])
if err != nil {
log.Error("dialing:%v", err)
}
err = client.Call(CometServicePing, args, &reply)
if err != nil {
log.Error("CometServicePing error:%v ", err)
_ = nodeMap[node].Count(time.Now().Unix())
}
// 若不关闭, 请求达到一定数量,client将返回nil
client.Close()
}
6、处理完map元素的任务,要删掉该map的元素,避免重复处理
var nodeMap map[string]*MinLimit = make(map[string]*MinLimit, 10)
for {
// 如果 nodeMap的某个节点信息已经被处理,node需要从nodeMap上删除
// 从nodeMap中删除该节点
delete(nodeMap, node)
}
7、"{" 换行: Opening Brace Can’t Be Placed on a Separate Line
例如:
package main
func main()
{
println("hello world")
}
报错
./main.go:3:6: missing function body for "main"
./main.go:4:1: syntax error: unexpected semicolon or newline before {
解决办法
package main
func main() {
println("hello world")
}
8、import 但未使用: Unused Imports
例如:
package main
import (
"fmt"
"os"
)
func main() {
println("hello world")
}
报错
./main.go:4:2: imported and not used: "fmt"
./main.go:5:2: imported and not used: "os"
解决办法
package main
import (
"fmt"
_ "os"
)
func main() {
fmt.Println("hello world")
}
9、命名区分大小写
例如
package main
import "fmt"
func main() {
fmt.println("Hello world")
}
报错
./main.go:6:2: cannot refer to unexported name fmt.println
./main.go:6:2: undefined: fmt.println
解决办法
package main
import "fmt"
func main() {
fmt.Println("Hello world")
}
// 以下代码都是不正确的:
// Package main
// iMport "fmt"
// import "Fmt"
// Func main() {}
// Fmt.Println
// fmt.println
参考:https://www.kancloud.cn/liupengjie/go/570004
参考:https://www.yuque.com/explore/headlines