使用go get导入github上的package

常常会看到这种package,那么如何导入这种package呢?

首先我们需要知道golang 项目的工程组织规范

golang 项目的工程组织规范,
以及远程包/本地包

$GOPATH
├─bin
├─pkg
└─src
    └─github.com(远程包)
    └─golang.org(远程包)
    └─your_pkg_src(本地包)

 
简要的说一说吧,以go-sqlite3为例,包的源码和项目中通常的引用方式为:
import github.com/mattn/go-sqlite3

那go get github.com/mattn/go-sqlite3下来的源码位置应为:
$GOPATH/src/github.com/mattn/go-sqlite3(这是物理路径)

同理如若网络问题导致需要手动下载包那就应该在src目录下建立同样的子目录将包存放到此处。

例如你的报错信息中有golang.org/x/net/context这个包,
因为golang.org的服务器是谷歌公司的,IP被封,你通过手动等方式下载回来的包因该存放到此处:
$GOPATH/src/golang.org/x/net/context

此处以使用go-echarts项目为例

代码如下

package main

import (
	"math/rand"
	"os"

	"github.com/go-echarts/go-echarts/v2/charts"
	"github.com/go-echarts/go-echarts/v2/opts"
)

// generate random data for bar chart
func generateBarItems() []opts.BarData {
	items := make([]opts.BarData, 0)
	for i := 0; i < 7; i++ {
		items = append(items, opts.BarData{Value: rand.Intn(300)})
	}
	return items
}

func main() {
	// create a new bar instance
	bar := charts.NewBar()
	// set some global options like Title/Legend/ToolTip or anything else
	bar.SetGlobalOptions(charts.WithTitleOpts(opts.Title{
		Title:    "My first bar chart generated by go-echarts",
		Subtitle: "It's extremely easy to use, right?",
	}))

	// Put data into instance
	bar.SetXAxis([]string{"Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"}).
		AddSeries("Category A", generateBarItems()).
		AddSeries("Category B", generateBarItems())
	// Where the magic happens
	f, _ := os.Create("bar.html")
	bar.Render(f)
}

如果什么都不做

import

	"github.com/go-echarts/go-echarts/v2/charts"
	"github.com/go-echarts/go-echarts/v2/opts"

这两部分的时候就会报错

由go-echarts中的安装教程首先在goland的terminal中输入

go get -u github.com/go-echarts/go-echarts/v2/...

go get的使用在另外一篇博客里有提到

执行后,你将会看到文件夹会在$GOPATH/src/github.com/下自动生成,之后package的导入就没有问题了(详见golang 项目的工程组织规范)

goland项目一定要有以一个package main

参考:

https://www.oschina.net/question/86462_2191491?sort=time

https://blog.csdn.net/qq_23599965/article/details/78799545

posted @ 2020-11-25 13:28  TR_Goldfish  阅读(1266)  评论(0编辑  收藏  举报