我们在写Go代码的时候经常用到import这个命令用来导入包文件,而我们经常看到的方式参考如下:

import("fmt"
)

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

fmt.Println("hello world")

上面这个fmt是Go语言的标准库,他其实是去goroot下去加载该模块,当然Go的import还支持如下两种方式来加载自己写的模块:

  1. 相对路径

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

  2. 绝对路径

    import “shorturl/model” //加载gopath/src/shorturl/model模块

上面展示了一些import常用的几种方式,但是还有一些特殊的import,让很多新手很费解,下面我们来一一讲解一下到底是怎么一回事

  1. 点操作

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

import( . “fmt” ) 这个点操作的含义就是这个包导入之后在你调用这个包的函数时,你可以省略前缀的包名,
也就是前面你调用的fmt.Println(“hello world”)可以省略的写成Println(“hello world”)
  1. 别名操作

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

import( f “fmt” ) 别名操作的话调用包函数时前缀变成了我们的前缀,即f.Println(“hello world”)
  1. _操作

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

import ( “database/sql” _ “github.com/ziutek/mymysql/godrv” ) _操作其实是引入该包,而不直接使用包里面的函数,而是调用了该包里面的init函数,
要理解这个问题,需要看下面这个图,理解包是怎么按照顺序加载的:

程序的初始化和执行都起始于main包。如果main包还导入了其它的包,那么就会在编译时将它们依次导入。有时一个包会被多个包同时导入,那么它只会被 导入一次(例如很多包可能都会用到fmt包,但它只会被导入一次,因为没有必要导入多次)。当一个包被导入时,如果该包还导入了其它的包,那么会先将其它 包导入进来,然后再对这些包中的包级常量和变量进行初始化,接着执行init函数(如果有的话),依次类推。等所有被导入的包都加载完毕了,就会开始对 main包中的包级常量和变量进行初始化,然后执行main包中的init函数(如果存在的话),最后执行main函数。下图详细地解释了整个执行过程:

通过上面的介绍我们了解了import的时候其实是执行了该包里面的init函数,初始化了里面的变量,_操作只是说该包引入了,我只初始化里面的 init函数和一些变量,但是往往这些init函数里面是注册自己包里面的引擎,让外部可以方便的使用,就很多实现database/sql的引起,在 init函数里面都是调用了sql.Register(name string, driver driver.Driver)注册自己,然后外部就可以使用了。

这样我们就介绍完了全部import的情况,希望对你理解Go的import有一定的帮助。

原文地址:http://blog.beego.me/blog/2013/07/27/golang-import-shi-yong-ru-men/

Golang Import使用入门相关推荐

  1. golang语言的入门基础,及window和linux系统上环境的搭配及运行

    golang语言的入门基础,及window和linux系统上环境的搭配及运行 简介: Go语言是谷歌推出的一种全新的编程语言,可以在不损失应用程序性能的情况下降低代码的复杂性.Go语言专门针对多处理器 ...

  2. golang import后带“_”下划线的意义

    2019独角兽企业重金招聘Python工程师标准>>> 在Golang里,import的作用是导入其他package,但是今天在看beego框架时看到了import 下划线,不知其意 ...

  3. Golang基础知识入门详解

    Go语言入门 Go语言入门教程 很多人将 Go 语言 称为 21 世纪的 C 语言,因为 Go 不仅拥有 C 语言的简洁和性能,而且还很好的提供了 21 世纪互联网环境下服务端开发的各种实用特性,让开 ...

  4. Golang import 包时可以使用相对路径吗

    当前使用 Golang 版本如下: go version go1.9.4 linux/amd64 假设环境变量 GOPATH="/users/peter/goworkspace". ...

  5. Golang import 三种特殊形式:下划线、点、别名-from-csdner-9命怪猫

    如同其它语言,Golang里面的import作用是引用其它package. 除了直接import,常见的import有三种特殊形式(或者叫前缀),分别是前面加下划线(_),加点(.),加别名. 一.加 ...

  6. golang import 导入包语法介绍 点 别名 下划线

    package 的导入语法 写 Go 代码的时经常用到 import 这个命令用来导入包,参考如下: import("fmt" ) 然后在代码里面可以通过如下的方式调用: fmt. ...

  7. Golang channel 快速入门

    文章目录 1.简介 2.缓冲 channel 3.range 和 close 操作 4.select 操作 5.注意要点 6.常见用法 参考文献 1.简介 channel 提供了一种通信机制,通过发送 ...

  8. Golang seelog 使用入门简介

    1 首先安装Seelog库 go get github.com/cihub/seelog 2 简单的日志输出 参考官方文档,些一个快速开始的 hello world 程序: package main ...

  9. golang im实战入门

    gim架构浅析 大家好,我是dandyhuang.记忆中,从大学接触编程开始,就觉得qq,wx这些聊天很神奇.就一直想弄明白它是怎么做的.直到毕业后,工作了一段时间这是根im相关的知识.golang中 ...

最新文章

  1. dubbo yml配置_利用springboot+dubbo,构建分布式微服务,全程注解开发(一)
  2. SAP PM 初级系列8 - PM 组织架构
  3. 如何提高在家办公的效率?
  4. Java程序执行Linux命令调用EasyPR程序识别车牌号
  5. python图片的比例缩放、剪裁和下采样
  6. c语言case后面多字符,多SWITCH-CASE结构时的C语言对象方式化解
  7. 二叉树的直径—leetcode543
  8. GDB and core
  9. css入门之head区设置
  10. AndroidO Treble架构下HIDL服务Java框架实现
  11. 大数据学习笔记32:Hive - 下载、安装与配置
  12. java macd_MACD到底是什么?
  13. jquery获取地址栏参数
  14. PSC-Net: Learning Part Spatial Co-occurrence for Occluded Pedestrian Detection 用于遮挡行人检测的部分空间共现网络 翻译
  15. 纯CSS实现的3D翻页效果
  16. 五分钟了解设计模式六大原则(上)
  17. 后台录屏、应用外录屏、跨应用录屏、直播屏幕、录屏扩展(ios)
  18. 2008上海英雄会,英雄如是说
  19. Python3 实现简易局域网视频聊天工具
  20. 北京理工大学ACM冬季培训课程之C++的应用

热门文章

  1. 蓝桥杯 PREV-3 历届试题 带分数 Java版
  2. 滨江学院 刘生 计算机网络考点知识点整理
  3. 1081. Rational Sum (20)-PAT甲级真题
  4. L1-009. N个数求和-PAT团体程序设计天梯赛GPLT
  5. php正则表达式 什么,php正则表达式是什么?(代码实例)
  6. 备份表或者备份表结构
  7. 服务器CPU X86 ARM PowerPC RISC介绍
  8. Flask-----轻量级的框架,快速的搭建程序
  9. 从“跳一跳”来看微信小程序的未来
  10. Android线程和线程Handler基础一览