go语言-包(一)

作者: 不思量q | 来源:发表于2020-03-22 11:57 被阅读0次
  1. go使用包来组织源代码,Go语言没有强制要求包名必须和其所在的目录名同名,但是建议包名和所在目录名同名,包借助了目录树的组织方式。

  2. 包的导入:包名是从GOPATH/src/后开始计算的,使用/进行路径分隔

    全路径导入:GOROOT/src后开始写

    包命名别名:import F "fmt"

    省略引用格式:import . "Fmt"引用时直接使用Println()

    匿名引用:只是希望执行包初始化的init 函数,而不使用包内部的数据时,可以使用import _ "net/http"

    包加载:在执行main包的main函数之前,go引导程序对整个程序的包进行初始化。从main函数引用的包开始,逐级查找包的引用,直到找到没有引用其他包的包,最终生成一个包引用的有向无环图。然后将图转化为一棵树,从树的叶子节点逐层向上对包进行初始化。单个包初始化时,先初始化常量,然后全局变量,最后执行init函数。

  3. 使用 export 指令可以将当前目录的值设置到环境变量 GOPATH中。

    export GOPATH=pwd

    建立gopath中的源码目录:mkdir -p src/hello

    编译和运行:go install hello

    bin目录下执行./hello

    GOPATH路径建议随项目路径设置,避免不可预知的错误

  4. 功能常用内置包

    • fmt io
    • bufio 对io包的封装,并提供了缓冲数据功能
    • sort
    • strconv 字符串和基本数据类型之间转换
    • sync 实现中锁机制和其他同步互斥机制
    • flag 命令行参数规则定义和解析
    • encoding/json 对象《=》JSON字符串间转换
    • html/template 主要实现了 web 开发中生成 html 的 template 的一些函数
    • net/http
    • ox/exec linux命令相关实现
    • reflect
    • bytes log
  5. 自定义包

    Go 编译速度快受益于以下三点:

    • 所有导入的包必须在每个文件的开头显示的声明
    • 禁止包的环状依赖,包的依赖关系会形成一个有向无环图,每个包可以独立编译,且很可能会并发编译
    • 编译后的文件不仅记录了本身的导出信息,目标文件还记录了包的依赖关系。因此在编译一个包时,不需要遍历所有引入的包,只需要读取直接导入的目标文件即可。
  6. 包中的标识符,让外部的包可以访问包的类型和值

    type MyStruct struct {
      OutPackage int // 包外可用
      innerPack string // 包内访问
    }
    type MyInterface interface {
      ExportedMethod() // 包外
      innerMethod()// 包内
    }
    

相关文章

  • Golang io reader writer

    推荐阅读Go语言小贴士1 - io包Go语言小贴士2 - 协议解析Go语言小贴士3 - bufio包 一、《GO语...

  • Go语言学习笔记(二)-基础语法

    Go语言结构 Go语言的基础组成有一下几个部分: 包声明 包引入 函数 变量 语句&表达式 注释 关于Go的语言组...

  • 理解Go语言包(package)

    1. Go语言包的概念 Go语言使用包来组织源代码的,并实现命名空间的管理,任何一个Go语言程序必须属于一个包,即...

  • go语言-包(一)

    go使用包来组织源代码,Go语言没有强制要求包名必须和其所在的目录名同名,但是建议包名和所在目录名同名,包借助了目...

  • Go语言环境和GoLand-IDE开发环境安装

    Go 语言中文网Go 语言标准库文档 Go 语言环境安装 根据系统下载 Go 安装包Go 安装包下载地址:http...

  • 初识Go语言

    Go 语言结构 初识Go语言 Go 语言结构 代码说明: ① 定义包名,必须在源文件中非注释的第一行指明这个文件...

  • 如何在Mac源码安装Go1.5开发环境

    到这里下载Go语言源码包。Go1.4到Go1.5是Go语言脱胎换骨的一次变更,The gc tool chain ...

  • go fmt与gofmt命令

    go fmt命令会按照Go语言代码规范格式化指定代码包中的所有Go语言源码文件的代码,所有Go语言源码文件即包括命...

  • TODO:Go语言同名Go字体发布

    TODO:Go语言同名Go字体发布 2016-11-16 Go语言官方博客发布了一款同名字体–Go字体。此字体族包...

  • Go语言之包和文件

    在Go语言中,包的作用和其他语言的库或者模块类似,Go语言的包我感觉类似于IDEA里面的module,就是可以互相...

网友评论

    本文标题:go语言-包(一)

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