Golang import 导入包语法及一些特殊用法详解

package 的导入语法

写 Go 代码的时经常用到 import 这个命令用来导入包,参考如下:

import(
  "fmt"
)

然后在代码里面可以通过如下的方式调用:

fmt.Println( "我爱我们" )

fmt 是 Go 的标准库,它其实是去 GOROOT 下去加载该模块,当然 Go 的 import 还支持如下两种方式来加载自己写的模块:

相对路径

import  "./model" // 当前文件同一目录的 model 目录,但是不建议这种方式 import

绝对路径

import  "shorturl/model" // 加载 GOPATH/src/shorturl/model 模块

package 的导入的特殊用法

上面展示了一些 import 常用的几种方式,但是还有一些特殊的 import ,让很多新手很费解,下面是三种导入包的使用方法。

点操作

有时候会看到如下的方式导入包:

import(
  . "fmt"
)

这个点操作的含义就是这个包导入之后在你调用这个包的函数时,你可以省略前缀的包名,也就是前面你调用的:

fmt.Println( "我爱我们" )

可以省略的写成:

Println( "我爱我们" )

别名操作

别名操作顾名思义可以把包命名成另一个用起来容易记忆的名字:

import(
  f "fmt"
) 

别名操作调用包函数时前缀变成了重命名的前缀,即:

f.Println( "我爱我们" )

下划线操作

这个操作经常是让很多人费解的一个操作符,请看下面这个 import

import (
  “database/sql”
  _ “github.com/ziutek/mymysql/godrv”
) 

下滑线 “_” 操作其实只是引入该包。当导入一个包时,它所有的 init() 函数就会被执行,但有些时候并非真的需要使用这些包,仅仅是希望它的 init() 函数被执行而已。这个时候就可以使用 “_” 操作引用该包了。即使用 “_” 操作引用包是无法通过包名来调用包中的导出函数,而是只是为了简单的调用其 init() 函数。

更多关于Golang import 导入包语法及一些特殊用法请查看下面的相关链接

(0)

相关推荐

  • 详解golang避免循环import问题(“import cycle not allowed”)

    前言 golang不允许循环import package ,如果检测到 import cycle ,会在编译时报错,通常import cycle是因为设计错误或包的规划问题. 以下面的例子为例,package a依赖package b,同事package b依赖package a package a import ( "fmt" "github.com/mantishK/dep/b" ) type A struct { } func (a A) PrintA() {

  • golang 之import和package的使用

    golang 使用包 package 来管理定义模块,可以使用 import 关键字来导入使用. 如果导入的是 go 自带的包,则会去安装目录 $GOROOT/src 按包路径加载,如 fmt 包 如果是我们 go get 安装或自定义的包,则会去 $GOPATH/src 下加载 package 的定义 package 的存放位置是以 $GOPATH/src 作为根目录,然后灵活的按照目录去组织,且包名需与最后一级目录名一致. 例如我们自定义 baz 包,包模块的存放位置则为 $GOPATH/s

  • 对Golang import 导入包语法详解

    package 的导入语法 写 Go 代码的时经常用到 import 这个命令用来导入包,参考如下: import( "fmt" ) 然后在代码里面可以通过如下的方式调用: fmt.Println( "我爱北京天安门" ) fmt 是 Go 的标准库,它其实是去 GOROOT 下去加载该模块,当然 Go 的 import 还支持如下两种方式来加载自己写的模块: 相对路径 import "./model" // 当前文件同一目录的 model 目录

  • Golang报“import cycle not allowed”错误的2种解决方法

    前言 相信不少 Gopher 在写 Golang 程序都遇到过 import cycle not allowed 问题,本人最近研读 go-ethereum 源码时,发现定义 interface 也能解决此问题, 还能解决连分包都不能解决的情况, 并且比分包更加简单快捷.下面逐个讲解 分包 和 定义接口 这两种方法. 1. 应用场景 假设有如下使用场景: A 是应用程序的框架级结构体,在 A 包含子模块 B 和 C 的指针: B 为了方便的使用应用的其他子模块(比如 C )功能,所以在其结构体包

  • go各种import的使用方法讲解

    go的各种import 最简单的: package main import "fmt" func main() { fmt.Println("hehe") // ok } 不用说. 导入的特殊用法 那么, 带一个点, 是什么意思呢? 看看: package main import . "fmt" func main() { Println("hehe") // ok } 可见, 带点后, 在调用时可以省略包名. 继续看, 下划

  • golang中import cycle not allowed解决的一种思路

    发现问题 项目中碰到了一些问题,使用了指针函数的思路来解决相应问题 在实际项目中,因为两个项目互相引了对方的一些方法,导致了循环引用的错误,原本可以使用http的请求来解决,经过其他人指导,发现了可以使用指针函数来解决 这里通过一个简单的例子来说明,首先是例子的结构,我们仅仅用到了这两个文件:ciconnector.go和rockettest.go 例子结构 原本设定的方法是这两个包里的函数互相调用,那么我们通过代码来看下怎么解决相应的问题. 首先是rockettest.go,这里调用了cico

  • MongoDB使用mongoexport和mongoimport命令,批量导出和导入JSON数据到同一张表的实例

    需求是这样的:需要修改数据库中某个表的所有数据,所以,要全部导出,然后修改,修改完之后,再把修改后的数据给再导入到mongo去. 具体如下: 备份,导出一张表为json文件 具体命令: mongoexport --host localhost --port 27017 --username ezsonaruser --password 123456 --collection host_locations --db ezsonar_25 --out /root/host_locations.jso

  • 如何解决django配置settings时遇到Could not import settings 'conf.local'

    举个例子吧 Django最佳实践与部署:Nginx + Gunicorn + Supervisor(Ubuntu和CentOS) http://sfdye.com/articles/django-best-practice-and-deployment-with-nginx-gunicorn-and-supervisor/ 结果出现runserver --settings=...的时候出现报错Could not import settings 'conf.local' (Is it on sys

  • Golang import 导入包语法及一些特殊用法详解

    package 的导入语法 写 Go 代码的时经常用到 import 这个命令用来导入包,参考如下: import( "fmt" ) 然后在代码里面可以通过如下的方式调用: fmt.Println( "我爱我们" ) fmt 是 Go 的标准库,它其实是去 GOROOT 下去加载该模块,当然 Go 的 import 还支持如下两种方式来加载自己写的模块: 相对路径 import "./model" // 当前文件同一目录的 model 目录,但是

  • Golang import本地包和导入问题相关详解

    1 本地包声明 包是Go程序的基本单位,所以每个Go程序源代码的开始都是一个包声明: package pkgName 这就是包声明,pkgName 告诉编译器,当前文件属于哪个包.一个包可以对应多个*.go源文件,标记它们属于同一包的唯一依据就是这个package声明,也就是说:无论多少个源文件,只要它们开头的package包相同,那么它们就属于同一个包,在编译后就只会生成一个.a文件,并且存放在$GOPATH/pkg文件夹下. 示例: (1) 我们在$GOPATH/目录下,创建如下结构的文件夹

  • Go基础教程系列之import导入包(远程包)和变量初始化详解

    import导入包 搜索路径 import用于导入包: import ( "fmt" "net/http" "mypkg" ) 编译器会根据上面指定的相对路径去搜索包然后导入,这个相对路径是从GOROOT或GOPATH(workspace)下的src下开始搜索的. 假如go的安装目录为/usr/local/go,也就是说GOROOT=/usr/local/go,而GOPATH环境变量GOPATH=~/mycode:~/mylib,那么要搜索net

  • java创建jar包并被项目引用步骤详解

    目录 jar包? 1.创建项目和验证 1.1创建项目 1.2 创建包和类 1.3相应的代码 2.打包和引用包 2.1打jar包 2.2 导入生成的jar包 2.3 验证jar包导入/应用的正确性 jar包? jar包: 实现了特定功能的,java字节码文件的压缩包.本质上就是一个编译后的java项目,打包成jar文件log4j.jar , mysql-connection-8.01.jar等. 自己创建jar包,让别人来用: 1.新建java项目 2.创建实现了特定功能的类 3.将该项目生成为j

  • Python入门之模块和包用法详解

    目录 模块 1. 导入模块的方式 2. 导入方式详解 3. 制作模块 4. 模块定位顺序 5. __all__ 包 1. 制作包 2. 导入包 总结 模块 Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和 Python 语句 模块能定义函数,类和变量,模块里也能包含可执行的代码 1. 导入模块的方式 import 模块名 from 模块名 import 功能名 from 模块名 import * import 模块名 as 别名

  • GOLang单元测试用法详解

    目录 概念 go test基本用法 go test 基础用例 测试可执行程序 外部测试包解决循环依赖 测试覆盖比例 测试基准函数 概念 单元测试 UT测试,针对程序来进行正确检测测试工作,一个优秀强壮代码 需要有完美的 UT测试用例 go test基本用法 go test 测试用例放在 *_test.go 文件中,与被测函数放到同一个目录下面go build 时候不会构建成包一部分 被测试用例函数命名 TestXXX. 第一个字母必须大写 测试函数: 检测逻辑是否正确 基准函数以BenChmar

  • python 中不同包 类 方法 之间的调用详解

    目录结构如下: 在hello.py中导入ORM.py这个文件的时候,采用 import ORMPackage.ORM 或者 import ORM u = User(id = 123, name='codiy', email='codiy_huang@163.com', password='123456') 两种方式均报错 错误提示: name '***' is not defined 或者 No module named ORM 解决办法: 方法一 将包所在的目录添加到sys.path路径 im

  • python解包用法详解

    对于一堆资料,我们可以把它分给不同的人使用,这个分散的过程,我们可以看成是解包方法是实现.当然实际python解包的使用会相对复杂一点,我们会对常见的列表.函数等进行操作.下面我们就Python解包的使用进行说明,然后带来两种解包方法的详解,大家一起往下看. 1.使用说明 (1)解包的意义就是将传递给函数的一个列表,元组,字典,拆分成独立的多个元素然后赋值给函数中的形参变量. (2)解包字典有两种解法,一种用*解的只有key,一种用**解的有key.value.但是这个方法**只能在函数定义中使

  • golang fmt格式“占位符”的实例用法详解

    golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf. # 定义示例类型和变量 type Human struct { Name string } var people = Human{Name:"zhangsan"} 普通占位符 占位符 说明 举例 输出 %v 相应值的默认格式. Printf("%v", people) {zhangsan}, %+v 打印结构体时,会添加字段名 Printf("%+v",

随机推荐