文档章节

golang导入包的理解

 杰克慢
发布于 2017/04/08 10:23
字数 644
阅读 10
收藏 0
点赞 0
评论 0

1、首先是包的引入原理

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

2、包导入的语法

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

import(
    "fmt"
)

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

fmt.Println("hello world")

上面这个fmt是Go语言的标准库,他其实是去GOROOT下去加载该模块。
 1. 点操作   

import (
	. "fmt"
)

这个点操作的含义就是这个包导入之后在你调用这个包的函数时,你可以省略前缀的包名,也就是前面你调用的fmt.Println(“hello world”)  可以省略的写成Println(“hello world”)。注意:该包内的函数不能与其重名。

 2. 别名操作  

import( f “fmt” ) 

别名操作顾名思义可以把包命名成另一个用起来容易记忆的名字,别名操作调用包函数时前缀变成了重命名的前缀,即f.Println(“hello world”)。

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

import (
    _ "github.com/go-sql-driver/mysql"
) 

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

3、包问题详解

http://blog.csdn.net/cmbug/article/details/49339341 引用一片比较好的文章。

© 著作权归作者所有

共有 人打赏支持
粉丝 1
博文 13
码字总数 12198
作品 0
海淀
『Go 语言学习专栏』-- 第六期

大家好,我叫谢伟,是一名程序员。 我们已经研究了: Golang 环境的搭建、设置GOPATH、GOROOT 参数,Govendor 包管理, Goland 集成开发环境 Golang 语言学习专栏 -- 第一期 Golang 的基础知...

谢小路 ⋅ 05/12 ⋅ 0

golang小程序试验(四)

golang的函数类型转换 一个go playground的例子,首先定义一个func类型的别名A,然后定义了A的一个方法。再定义一个函数,此函数的参数与返回值与A相同(这样才能显式转换)。在main中把此函...

壬癸甲乙 ⋅ 2013/12/11 ⋅ 0

Golang Import使用入门

我们在写Go代码的时候经常用到import这个命令用来导入包文件,而我们经常看到的方式参考如下: import( ) 然后我们代码里面可以通过如下的方式调用 fmt.Println("hello world") 上面这个fmt...

yearnfar ⋅ 2013/11/12 ⋅ 0

goalng导出excel(csv格式)

最近项目中有个小需求,需要将查询结果导出到excel。之间前java比较容易,使用POI很容易就能实现,查了下golang的文档,发现golang下边并没有导出excel的包,但是却有一个encoding/csv的包,...

oO脾气不坏Oo ⋅ 2014/07/20 ⋅ 0

go -- hello world

go 中,初始化的顺序,package ->const->var ->init()->main() 为了使用导入的包,首先必须将其初始化。这通过Golang的运行时系统控制,执行顺序为: 初始化导入的包(递归导入) 对包块中声...

翱翔fly ⋅ 04/24 ⋅ 0

Go项目的目录结构

项目目录结构如何组织,一般语言都是没有规定。但Go语言这方面做了规定,这样可以保持一致性 1、一般的,一个Go项目在GOPATH下,会有如下三个目录: |--bin|--pkg|--src 其中,bin存放编译后...

mickelfeng ⋅ 2016/01/18 ⋅ 0

golang进阶(八)——隐藏技能go:linkname

什么是go:linkname 指令的格式如下: go:linkname引导编译器将当前(私有)方法或者变量在编译时链接到指定的位置的方法或者变量,第一个参数表示当前方法或变量,第二个参数表示目标方法或变量...

lastsweetop ⋅ 2017/12/18 ⋅ 0

Golang包和工具

Golang包和工具 包的导入路径 Go语言的规范并没有指明包的导入路径字符串的具体含义,导入路径的具体含义是由构建工具来解释的。如果你计划分享或发布包,那么导入路径最好是全球唯一的。为了...

秋风醉了 ⋅ 2016/07/26 ⋅ 0

golang 测试文件xxx_test

go 的版本:go version go1.4.2 windows/386 举例:如果golang的包在同一目录下,比如GOPATH下面src/test/ 目录下有包名package test 如果此时有 test.go 和 testtest.go,那么包导入的时候会...

golang_yh ⋅ 2015/10/11 ⋅ 0

golang: 利用unsafe操作未导出变量

看了 @喻恒春 大神的利用unsafe.Pointer来突破私有成员,觉得例子举得不太好。而且不应该简单的放个demo,至少要讲一下其中的原理,让看的童鞋明白所以然。see:http://my.oschina.net/achun...

陈亦 ⋅ 2014/01/17 ⋅ 10

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Nginx服务架构初探(四):nginx服务器的rewrite功能

nginx服务器的rewrite功能 1.nginx后端服务器组的配置 1>upstream name {…} name是给服务器组限的组名 2>server address [parameters]; address为服务器地址 parame......

余温灬未存 ⋅ 今天 ⋅ 0

layer.prompt使文本框为空的情况下也能点击确定

最近一直在使用layui,但是用到弹出层layer.prompt时,如果文本框是空的话点击确定没有反应,不能向下执行。 但是我又需要空值,看看我原来的代码。 123456789 layer.prompt...

孟飞阳 ⋅ 今天 ⋅ 0

Linux普通文件压缩工具gzip、Bzip2、xz

第六章 文件压缩和打包 6.1 压缩打包介绍 Linux环境常见压缩文件类型: .zip,.gz,.bz2,.xz, .tar.gz,.tar.bz2,.tar.xz 压缩打包的目的 方便文件传输 节省磁盘空间 减少传输花费的时间 ...

弓正 ⋅ 今天 ⋅ 0

移动弹窗基础知识浅析——IOS弹窗体系

摘要: 最为常见的【弹窗】反而是最“捉摸不定”的东西。各种类型的弹窗傻傻分不清楚,不知道在什么场景下应该用哪种弹窗。尤其是遇到“二次确认”等场景…… 因此,打算从头整理移动弹窗的基...

阿里云云栖社区 ⋅ 今天 ⋅ 0

zabbix短信报警统计以及报表展示

一、需求 由于我们的业务报警比较频繁,之前是针对每个报警进行具体处理,但是有时还会重复出现,或者后续处理有时忘记跟进等,因此进行报警短信的统计,可以针对一些问题与业务跟进,明确后...

o翡翠谷o ⋅ 今天 ⋅ 0

JNI 输出LOG

1、导入log头文件。在你使用的 .c/ .cpp 文件中,导入 log.h 头文件。 #include<android/log.h> 2、在android.mk 加上 LOCAL_LDLIBS := -llog 或 LOCAL_SHARED_LIBRARIES := liblog 3、定义L......

国仔饼 ⋅ 今天 ⋅ 0

主线程pthread_exit 作用

#include <iostream>#include <pthread.h>#include <unistd.h>using namespace std;#define NUM_THREADS 10void* say_hello(void* args){ int i = *((int*)args);/......

xxdd ⋅ 今天 ⋅ 0

崛起于Springboot2.X之Mybatis-xml方式操作mysql数据库(3)

序言:当第一篇讲道Mybatis的时候,只要使用过mybatis的java程序员100%都会知道这种方式,因为这是最广泛最全面的编写sql操作mysql数据库的方式,高级sql的编写往往通过xml方式,接下来进入正...

木九天 ⋅ 今天 ⋅ 2

移动弹窗基础知识浅析——IOS弹窗体系

摘要: 最为常见的【弹窗】反而是最“捉摸不定”的东西。各种类型的弹窗傻傻分不清楚,不知道在什么场景下应该用哪种弹窗。尤其是遇到“二次确认”等场景…… 因此,打算从头整理移动弹窗的基...

猫耳m ⋅ 今天 ⋅ 0

spring elasticsearch 2.4 date 日期

1.mappingPUT user_behavior { "mappings": { "user_behavior": { "properties": { "date": { "type": "createDate", ......

xiaomin0322 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部