例如:
import (
“main/controller“
“net/http“
“github.com/gin–gonic/gin“
)
针对本地包:编译器会根据指定的相对路径去搜索包然后导入,相对路径
是从GOROOT或GOPATH下的src开始搜索的。
例如:go安装目录GOROOT为/usr/local/go,GOPATH环境变量为~/work:~/code,则搜索net/http和main/controller按照如下顺序进行
/usr/local/go/main/controller
~/work/main/controller
~/code/main/controller
导入包后就可以使用包中的属性。通过包名.属性的方式即可。例如fmt包中Println函数:fmt.Println。
例如同时需要导入:network/convert包和file/convert包,调用时convert.FUNC()如何区分呢?
答案是为导入的包添加一个名称属性,为包设置一个别名。例如
import {
nconvert “network/convert“
fconvert “file/convert“
}
nconvert.FUNC() 和 fconvert.FUNC()即可区分
如果不想在访问包属性的时候加上包名,则import导入的时候,可以为其设置特殊的别名:点(.)
例如:
import (
.”fmt“
)
引用时Println即可,不能使用fmt.Println
go要求import导入的包必须在后续中使用,否则会报错。如果要避免这个错误,可以在包的前面加上下划线,例如
import {
“fmt”
_ “net/http“
“mypkg“
}
如上在当前包中就可以不使用net/http包。其实这也是给包重命名。只不过命名为”_”,而这个符号表示丢弃复制结果,使其成为一个匿名包。
匿名包并非多此一举,因为导入匿名包时,会进行一些初始化操作(例如init()函数),如果这个初始化操作影响当前包,name这个匿名包就是有意义的。
(1)在目录$GOPATH/src或者$GOROOT/src下创建目录(目录名称一般是包名)
mkdir main/ypackage
注意:一般建议package的名称和目录名保持一致。
(2)创建go源文件
touch sqrt.go
内容如下
package mypackage
func Hello() {
fmt.Println(“Hello World !”)
}
func Sqrt(x float64) float64 {
z := 0.0
for i := 0; i < 1000; i++ {
z -= (z*z – x) / (2 * x)
}
return z
}
任意目录执行: go install main/mypackage
进入如下目录查看安装结果
cd $GOROOT
./pkg/linux_amd64/main/mypackage.a
import (
“fmt”
“main/mypackage”
)
func main() {
fmt.Println(“start …”)
mypackage.Hello()
fmt.Println(mypackage.Sqrt(16))
}
go语言有一个获取远程包的工具go get,目前go get支持多数开源社区(例如:github、googlecode、bitbucket、Launchpad)
命令:
go get github.com/gin-gonic/gin
go get -u 参数可以自动更新包,而且当go get的时候会自动获取该包依赖的其他第三方包
命令:
go get -u github.com/gin-gonic/gin
通过这个命令可以获取相应的源码,对应的开源平台采用不同的源码控制工具,例如github采用git、googlecode采用hg,所以要想获取这些源码,必须先安装相应的源码控制工具。
通过上面获取的代码在我们本地的源码相应的代码结构如下
$GOPATH
src
|–github.com
|-gin-gonic
|-gin
pkg
|–相应平台
|-github.com
|–gin-gonic
|gin.a
go get本质上可以理解为首先第一步是通过源码工具clone代码到src下面,然后执行go install
远程包的调用
在代码中如何使用远程包,很简单的就是和使用本地包一样,只要在开头import相应的路径就可以
import “github.com/gin-gonic/gin”
提醒:bin目录下面存的是编译之后可执行的文件,pkg下面存放的是应用包,src下面保存的是应用源代码。
Go中除了main()函数外,还保留了init()函数,这两个函数都不能有任何参数和返回值。它们都是在特定的时候自动调用的,无需我们手动执行。
每个包中都可以定义init函数,甚至可以定义多个,但建议每个包只定义一个。每次导入包,在导入完成后,且变量,常量等声明并初始化完成后,将会调用这个包中的init()函数
对于main包,如果也定义了init,那么它会在main()函数之前执行。当main包中的init()执行完之后,就会立即执行main()含住,然后进入主程序。
Gin 是一个用 Go (Golang) 编写的 web 框架。 它是一个类似于 martini 但拥有更好性能的 API 框架, 由于 httprouter,速度提高了近 40 倍。 如果你是性能和高效的追求者, 你会爱上 Gin.
要安装 Gin 软件包,需要先安装 Go 并设置 Go 工作区。
(1)下载并安装 gin
go get -u github.com/gin-gonic/gin
(2)gin 引入
import “github.com/gin-gonic/gin”
(3)(可选)如果使用诸如 http.StatusOK 之类的常量,则需要引入 net/http 包:
import “net/http“
package main
import “github.com/gin-gonic/gin”
func main() {
r := gin.Default()
// 返回一个json数据
r.GET(“/ping“, func(c *gin.Context) {
c.JSON(200, gin.H{
“message”: “pong”,
})
})
// 返回一个html页面
r.LoadHTMLGlob(“templates/*”)
r.GET(“/index“, func(c *gin.Context) {
c.HTML(http.StatusOK, “index.html“,nil)
})
r.Run() // 监听并在 0.0.0.0:8080 上启动服务
}
原文地址:https://blog.csdn.net/hsy12342611/article/details/131523455
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_13709.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!