1.基本用法:
1.1 通过package关键字定义包:
package xxx
1.2 使用import关键字,导入要使用的标准库包或第三方依赖包。
import "a/b/c" import "fmt"
1.3 通过包名调用
c.Func1()
fmt.Println("Hello, World")
2. imort包的几种方法和特征:
2.1相对路径
import "./module" //当前文件同一目录的module目录, 此方式没什么用容易出错</span>
2.2绝对路径
import “LearnGo/init” //加载gopath/src/LearnGo/init模块
2.3点操作
import( . “fmt” )
这个点操作的含义就是这个包导入之后在你调用这个包的函数时,你可以省略前缀的包名,也就是前面你调用的fmt.Println("hello world")
可以省略的写成Println("hello world")
2.4别名操作
import(
f "fmt"
)
别名操作的话调用包函数时前缀变成了我们的前缀,即f.Println("hello world")。
2.5 下划线 _ 操作
_ "github.com/revel/modules/testrunner/app"
_ "guild_website/app"
)
_操作其实只是引用该包,仅仅是为了调用init()函数,所以无法通过包名来调用包中的其他函数
3.导包流程
程序的初始化和执行都起始于main包。
如果main包还导入了其它的包,那么就会在编译时将它们依次导入。
有时一个包会被多个包同时导入,那么它 只会被导入一次(例如很多包可能都会用到fmt包,但它只会被导入一次,因为没有必要导入多次)。
当一个包被导入时,如果该包还导入了其它的包,那么会先将其它包导入进来,然后再对这些包中的包级常量和变量进行初始化,接着执行init函数(如果有的话),依次类推。
4.导包注意
(1)在使用第三方包的时候,当源码和.a均已安装的情况下,编译器链接的是源码。
(2)使用第三方包源码,实际上是链接了以该最新源码编译的临时目录下的.a文件而已。
(3)import后面的最后一个元素应该是路径,就是目录,并非包名,而下面调用时foo.Foo()中的foo则是包名
(4)别名导入 import m "lib/math" 中 m指代的是lib/math路径下唯一的那个包。