前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >go import导包关键字

go import导包关键字

作者头像
潇洒
发布2023-10-20 10:58:59
2070
发布2023-10-20 10:58:59
举报
文章被收录于专栏:石头岛

import 导包

有相对路径 和 绝对路径,推荐使用绝对路径。 GoLand 中导包如果不用,会报错。

格式

导入单个路径

代码语言:javascript
复制
import "./model"  //不建议这种方式import

导入多个路径

代码语言:javascript
复制
import (
    "./model"
    "github.com/forfreeday/go-learning"
)

路径

相对路径:

代码语言:javascript
复制
import "./model"  //不建议这种方式import

绝对路径:

代码语言:javascript
复制
import "shorturl/model"  //加载GOPATH/src/shorturl/model模块

点操作

这个点操作的含义就是这个包导入之后在你调用这个包的函数时,你可以省略前缀的包名,

代码语言:javascript
复制
import( . "fmt" )

func main() {
  fmt.Println("hello world")
  //可以省略的写成 
  Println("hello world") 
}

别名

代码语言:javascript
复制
import(test "fmt")

func main()  {
   var a int = 10;
   test.Print("a address is % :", &a)
   pointer.Add(1,2)
}

_ 执行init

作用:当导入一个包时,该包下的文件里所有init()函数都会被执行, 使用下划线_导的包,不使用也不报错

如:import _ hello/imp

场景: 有些时候我们并不需要把整个包都导入进来,仅仅是是希望它执行init()函数而已。 这个时候就可以使用 import _引用该包,即使用import _ 包路径只是引用该包,仅仅是为了调用init()函数,所以无法通过包名来调用包中的其他函数。

目录结构

代码语言:javascript
复制
>--src
>  |
>  |--main.go
>  \--hello
>      \--imp
>         |--init.go

验证初始化

这里可以执行 init(),但是不能调用这个包内的函数。

代码语言:javascript
复制
package main
import _ "hello/imp"

func main() {
    // imp.Print() 编译报错,说:undefined: imp
}
代码语言:javascript
复制
package imp
import "fmt"

func init() {
    fmt.Println("imp-init() come here.")
}

func Print() {
     fmt.Println("Hello!")
}

输出结果:imp-init() come here.

如果需要即要初始化 init() 函数,又要调用其他函数,就必须再导入一次不带下划线的包就可以。

总结

go 的 import,还是比较中规中规矩,实际使用当中 import() 使用的比较多,毕竟不会只导入一两个包。 _ 的用法在很多框架低层中很常用,要注意。

项目练习代码: https://github.com/forfreeday/go-learning

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-02-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • import 导包
    • 格式
      • 路径
        • 点操作
          • 别名
            • _ 执行init
              • 验证初始化
              • 总结
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档