golang import 问题请教

为何网上的一些golang项目,它们import的时候 都是github.com/xxx/xxx这样的规则?
那我开发自己的项目的时候,gopath是否也要设置成这样?

如何import我自己写的包?"./packagename/ 这样吗? 可是我看开源项目引用自己的包,都不是通过相对路径去引用的

请问一个常规的golang项目 该如何去管理它的import,包括第三方和自身,以及如何import自定义包

可以用govendor来管理go包的问题,https://github.com/kardianos/govendor

git 的包默认的路径是guihub,你可以把它改路径,golang开源在github上,上面很多库。自己导包也可以的,放到src里面就可以把。

使用gopath的时候,一般引用是从src下一层开始,比如src/githum.com/...,引用githum.com...,我的工程src/xxx.com/go-qb/...,引用xxx.com/go-qb/...

使用mod的时候,githum自动下载到gopath的pkg里,全名引用githum.com...,我的工程从mod文件夹下一层开始引用,mod/xxx.com/go-qb/...,引用xxx.com/go-qb/...

我这里两种情况都是如此:

import (
    "context"
    "net/http"
    "os"
    "os/signal"
    "time"

    "xxx.com/go-qb/config"
    "xxx.com/go-qb/db"
    "xxx.com/go-qb/redis"
    "xxx.com/go-qb/router"

    "github.com/gin-gonic/gin"
    "github.com/lexkong/log"
    "github.com/spf13/viper"
    "github.com/unrolled/secure"
)

包使用的时候通常用最后一层路径来点出方法或变量,比如上面的config,db等等,用法:db.X()

如果想重命名,在引用前面加方法名即可:

mysql "xxx.com/go-qb/db"

用法:mysql.X()

如果想不加包名,在引用前面加.即可:

. "xxx.com/go-qb/db"

用法:X()