美文网首页go 学习笔记
Go语言基础语法(import)-6

Go语言基础语法(import)-6

作者: markfork | 来源:发表于2018-10-11 01:19 被阅读21次

章节

  • import 导包基础语法简介
  • import 导包原理
  • import 导包实践

1.import 基础语法简介

1.1 import语句可以导入源代码文件所依赖的package 包

1.1.1 import fmt

package main

import "fmt"

func main() {
    fmt.Println("测试")
}

1.2 不得导入源代码文件中没有用到的package,否则Go语言编译器会报编译错误

1.2.1 引入源代码程序中用不到的time包 (2018版的 goland 可以自动去除没有使用的package)

1.3 import 语法格式分为两种

1.3.1 语法格式1

import  "package1"
import  "package2"
import  "package3"

1.3.2 语法格式2

import (
      "package1"
      "package2"
      "package3"
)

2 import原理

  • 如果一个package main 中导入其他的包,包将被顺序导入;
  • 如果导入的包中依赖其他包(包B),会首先导入B包,然后初始化B包中常量和变量,最后如果B包中有init()方法,会自动执行init();
  • 所有包导入完成后才会对main中的常量变量进行初始化,谈后执行main中的init函数(如果存在),最后执行main函数;
  • 如果一个包被导入多次则该包只会被导入一次;

先初始化依赖包,包中内容的初始化为 常量&变量->init()函数->main(主程文件)中的main()函数

import导入依赖包原理图如下所示:

依赖包导入原理图

3.import 导包实践

3.1 创建learn01 、show02两个包

创建learn01 、show02两个包

代码如下所示:
learn/lean01.go

package learn01

import "fmt"

//初始化函数
func init() {
   fmt.Println("learn_1 init")
}

//a函数 什么都不做
func Learn1() {

}

show02/show.go

package show02

import "fmt"

//初始化函数
func init() {
    fmt.Println("show_2 init")
}

//函数名大写
func Show2() {

}

main.go

package main

//问题1:没有自动 import 相关的包
import (
    "fmt"
    "learn01"
    "show02"
)

/**
   问题:如果在main中不调用其他包的函数,其他包的init函数会执行吗?
 */
func main() {
    fmt.Println("main println")
    learn01.Learn1()//注意此为空方法体
    show02.Show2()
}

问题列表:

  • 最新版goland 2018.02版本对于源代码的放置路径有严格要求,必须放置在项目的 src 目录下?
  • import 自动导包功能缺失?

运行结果如下所示:

main.go 运行结果

注意:不同包的init()函数执行先后顺序跟导包顺序相关。

相关文章

  • Go语言基础语法(import)-6

    章节 import 导包基础语法简介 import 导包原理 import 导包实践 1.import 基础语法简...

  • Go语言基础语法--注释、基础结构2

    章节 GO语言基础语法--注释、基础结构(重要) 1.GO语言基础语法---注释、基础结构 基础结构注意事项 源文...

  • 初识Go语言-1

    Go语言学习路径 初识Go语言 Go语言环境搭建与IDE安装 Go语言基础语法 Go语言数据类型 Go语言变量和常...

  • Go语言的import 语法

    转自https://blog.csdn.net/zhangzhebjut/article/details/2556...

  • docker 源码入门

    前言 docker是go语言编写的,要看docker源码,最起码要学会go的基础语法。 了解 docker 基础架...

  • 第5章 Kotlin语言基础 《Kotin 编程思想·实战》

    第5章 Kotlin语言基础 5.1 基础语法5.1.1 包(package): package打包与import...

  • Go语言基础语法

    抽空看了一下go,顺便做了个总结。话说go的语法还真感觉有点特别,而且抽象层次更高,对初学者可能障碍更多。还是按照...

  • Go 语言基础语法

    上一章节我们已经了解了 Go 语言的基本组成结构,本章节我们将学习 Go 语言的基础语法。 -Go 标记 Go 程...

  • Go 语言基础语法

    上一章节我们已经了解了 Go 语言的基本组成结构,本章节我们将学习 Go 语言的基础语法。 Go 标记 Go 程序...

  • Go 语言基础--语法基础

    运算符 同其他语言一样go也有 算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符 这几类,作用也是一致的,...

网友评论

    本文标题:Go语言基础语法(import)-6

    本文链接:https://www.haomeiwen.com/subject/rtdeoftx.html