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的更多相关文章

  1. 3.Golang的包导入

    1.golang的源码文件可以随意命名,但是属于同一个包的源文件必须声明 package base 2.golang的包引入规则 import ( "fmt" #系统包直接写名字 ...

  2. Golang自定义包导入

    # 文件Tree project -/bin -/pkg -/src -main.go -/test -test1.go -test2.go main.go package main import ( ...

  3. 理解Golang包导入

    Golang使用包(package)这种语法元素来组织源码,所有语法可见性均定义在package这个级别,与Java .python等语言相比,这算不上什么创新,但与C传统的include相比,则是显 ...

  4. [golang note] 包和导入

    package的作用        √ package是golang最基本的分发单位和工程管理中依赖关系的体现.        √ 每个golang源代码文件开头都拥有一个package声明,表示该g ...

  5. 包(package) 与 导入(import) 语句剖析

    A) 包(package):用于将完成不同功能的类分门别类,放在不同的目录下. B)命名规则:将公司域名翻转作为包名.例如www.vmaxtam.com域名,那么包名就是com.vmaxtam 每个字 ...

  6. 引入工程报包导入异常:import javax.servlet.annotation.WebFilter;

    引入工程报包导入异常:import javax.servlet.annotation.WebFilter; (2013-02-21 16:38:00)   分类: java 今天上午导入了一个项目,用 ...

  7. 【Python实战】模块和包导入详解(import)

    1.模块(module) 1.1 模块定义 通常模块为一个.py文件,其他可作为module的文件类型还有".pyo".".pyc".".pyd&qu ...

  8. IDEA 禁止自动导入引用包 取消import包

    http://www.oschina.net/question/2010061_226765 我想拷贝一小段代码,或者我就是不想引入拷贝来的包,我该怎么取消掉idea的自动导入import包呢? 找到 ...

  9. python相对包导入报“Attempted relative import in non-package”错误

    文章是从stackoverflow翻译过来的,原文地址:Relative imports for the billionth time 本文要在原理上解决  python当中相对包导入出现的问题. 问 ...

随机推荐

  1. webpack 打包生成的index 路径引用不对

    webpack 在打包时在访问打包里面的index时,出现路径错误 修改方法为 解决方法:在config下面的index.js把 assetsPublicPath: '/', 修改为: assetsP ...

  2. 细说WPF自定义路由事件

    WPF中的路由事件 as U know,和以前Windows消息事件区别不再多讲,这篇博文中,将首先回顾下WPF内置的路由事件的用法,然后在此基础上自定义一个路由事件. 1.WPF内置路由事件   W ...

  3. Flink 1.9 实战:使用 SQL 读取 Kafka 并写入 MySQL

    上周六在深圳分享了<Flink SQL 1.9.0 技术内幕和最佳实践>,会后许多小伙伴对最后演示环节的 Demo 代码非常感兴趣,迫不及待地想尝试下,所以写了这篇文章分享下这份代码.希望 ...

  4. 释放内存触发断点及数组、指针的NULL初始化

    Visual Studio调试时,出现“触发一个断点”内存释放出现异常 数组和对应指针的NULL初始化 数组使用之前要先对其初始化 char Outi[4] = { NULL }; char Outj ...

  5. Django项目:CRM(客户关系管理系统)--73--63PerfectCRM实现CRM讲师下载作业

    # teacher_urls.py # ————————62PerfectCRM实现CRM讲师讲课记录———————— from django.conf.urls import url from bp ...

  6. sql错误;The user specified as a definer ('tester'@'%') does not exist

    在复制和导数据库时提示错误:SELECT command denied to user 'tester'@'%' for column 'uID' in table 'view_enterprise_ ...

  7. 清除样式的css

    html, body, div, ul, li, h1, h2, h3, h4, h5, h6, p, dl, dt, dd, ol, form, input, textarea, th, td, s ...

  8. PAT甲级——A1036 Boys vs Girls

    This time you are asked to tell the difference between the lowest grade of all the male students and ...

  9. spring boot 源码解析11-ConfigurationClassPostProcessor类加载解析

    前言 ConfigurationClassPostProcessor实现了BeanDefinitionRegistryPostProcessor接口,该类会在AbstractApplicationCo ...

  10. 桥接模式(Bridge、Implementor)(具体不同平台日志记录,抽象与实现分离)

    桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地变化.它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式 ...