golang的包导入import
import别名/点下划线
(1)import关键字的作用:作用是导入该go源文件所依赖的package包。用在go源文件中,紧接在pakage后面的部分。
(2)只要在源文件中用到了的package包就必须导入,而没有用到的package就绝对不能导入。
(3)推荐使用import方式:(若有重复名称的包,则需要用别名来区分即可)
import (
"package1"
"package2"
"package3"
"package4"
)
(4)包导入顺序规则:每个包只会被导入一次,且依赖包按照出现顺序优先被导入。
若main包依赖包A,包A依赖包B。
则会先导入包B,导入包B就会先初始化包B的常量和变量,然后执行包B的init函数(如果有的话)。
B包导入完成后,就开始导入A包,同样会先初始化包A的常量和变量,然后执行包A的init函数(如果有的话)。
A包导入完成后,就开始导入main包,同样会先初始化main包的常量和变量,然后执行包A的init函数(如果有的话),最后执行main包中的main函数。
------------------------------------------------------------------------------------------------------------
- 1、通用导入方式(推荐)
import (
"fmt"
)
然后我们就可以通过包名调用相应的函数或者变量了
fmt.Println("Hello World!")
- 2、别名import(推荐)
在同一个go源码文件中导入多个包时,当导入的这些包的最后一个元素(包名)重复时,则无法编译,此时最佳选择就是给导入的包取一个不同的别名来解决问题,这是别名最大的用处。当然,有时候可能包的名字很长或者不容易记忆,然后你可以给这个包起个别名(比如短一点啊或者容易记忆啊),这也算是另一个用处。故有两大用处:一是避免包最后一个元素重名,二是简化包名称。import (
f "fmt"
)
然后可以如下使用该包
f.Println("Hello World!")
- 3、下划线import(有必要时,则推荐)
当我们import一个包的时候,它里面的所有init()函数都会被执行,但是有时候我们并不真正需要使用这些包,仅仅是希望它里面的init()函数被执行,这个时候,就可以使用下划线import了import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
) - 4、点import(听我的,不要用。因为不同包下面的一些函数、常量、变量、类型等对象很有可能重名)
点import就是在import 的包前面加个".", 这个导入方式,在使用相应的包的函数或者变量的时候,可以省略包名
import (
. "fmt"
)
然后我们可以不用带包名前缀调用相应包的函数
Println("Hello World!")
golang的包导入import的更多相关文章
- 3.Golang的包导入
1.golang的源码文件可以随意命名,但是属于同一个包的源文件必须声明 package base 2.golang的包引入规则 import ( "fmt" #系统包直接写名字 ...
- Golang自定义包导入
# 文件Tree project -/bin -/pkg -/src -main.go -/test -test1.go -test2.go main.go package main import ( ...
- 理解Golang包导入
Golang使用包(package)这种语法元素来组织源码,所有语法可见性均定义在package这个级别,与Java .python等语言相比,这算不上什么创新,但与C传统的include相比,则是显 ...
- [golang note] 包和导入
package的作用 √ package是golang最基本的分发单位和工程管理中依赖关系的体现. √ 每个golang源代码文件开头都拥有一个package声明,表示该g ...
- 包(package) 与 导入(import) 语句剖析
A) 包(package):用于将完成不同功能的类分门别类,放在不同的目录下. B)命名规则:将公司域名翻转作为包名.例如www.vmaxtam.com域名,那么包名就是com.vmaxtam 每个字 ...
- 引入工程报包导入异常:import javax.servlet.annotation.WebFilter;
引入工程报包导入异常:import javax.servlet.annotation.WebFilter; (2013-02-21 16:38:00) 分类: java 今天上午导入了一个项目,用 ...
- 【Python实战】模块和包导入详解(import)
1.模块(module) 1.1 模块定义 通常模块为一个.py文件,其他可作为module的文件类型还有".pyo".".pyc".".pyd&qu ...
- IDEA 禁止自动导入引用包 取消import包
http://www.oschina.net/question/2010061_226765 我想拷贝一小段代码,或者我就是不想引入拷贝来的包,我该怎么取消掉idea的自动导入import包呢? 找到 ...
- python相对包导入报“Attempted relative import in non-package”错误
文章是从stackoverflow翻译过来的,原文地址:Relative imports for the billionth time 本文要在原理上解决 python当中相对包导入出现的问题. 问 ...
随机推荐
- js实现事件委托
事件委托的概念: 事件委托就是利用事件冒泡,把事件加到父元素或祖先元素上,触发执行效果. 事件委托的写法: btn6.onclick = function(event){ event = event ...
- RN 环境搭建 运行demo App
1.环境搭建 1.1 JDK 1.2Android JDK 需要安装c++环境(我选择安装android studio) 1.3Node npm config set registry https: ...
- jdk不同版本的垃圾收集器
- Python技巧—list与字符串互相转换
Python技巧-list与字符串互相转换 在Python的编程中,经常会涉及到字符串与list之间的转换问题,下面就将两者之间的转换做一个梳理. 1.list转换成字符串 命令:list() 例子: ...
- 组件:slot插槽
<!DOCTYPE html> <html lang="zh"> <head> <title></title> < ...
- Spring MVC(三)--控制器接受普通请求参数
Spring MVC中控制器接受参数的类方式有以下几种: 普通参数:只要保证前端参数名称和传入控制器的参数名称一致即可,适合参数较少的情况: pojo类型:如果前端传的是一个pojo对象,只要保证参数 ...
- WhaleCTF之web-Find me
WhaleCTF之web-Find me 前往题目 Where is the flag?这是给我提示吗? 没思路,看看源码,说不定有惊喜 哇,在这里啊,得到flag~ flag:{This_is_s0 ...
- Redis生存时间、删除策略和排序
生存时间 设置命令 expire key long:设置数据在long秒后过期. pexpire key long:设置数据在long毫秒后过期. ttl key:查询数据剩余的生存时间.如果数据已过 ...
- python生成VOC2007的类库
VOCAnnotation.py: # -*-coding:utf-8-*- from lxml import etree import os class VOCAnnotation(object): ...
- python 与 selenium 学习笔记
在写自动运行测试用例,并且生成HTML报告的时候,遇到了这个报错: UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in positi ...