美文网首页
Go语言之包和文件

Go语言之包和文件

作者: WongBynn | 来源:发表于2021-11-08 12:42 被阅读0次

在Go语言中,包的作用和其他语言的库或者模块类似,Go语言的包我感觉类似于IDEA里面的module,就是可以互相调用的子工程的概念。用于支持模块化、封装、编译隔离和重用。一个包的源代码保存在一个或者多个以.go结尾的文件中,它所在目录名的尾部就是包的导入路径。

每一个包给它的声明提供独立的命名空间。例如,在image包中,Decode标识符合unicode/utf16中的标识符一样,但是关联了不同的函数。为了从外部引用一个函数,我们必须明确修饰标识符来指明所指的是image.Decodeutf16.Decode.

包让我们可以通过控制变量在包外面的可见性或导出情况来隐藏信息。在Go里,通过一条简单的规则来管理标识符是否对外可见:导出的标识符以大写的字母开头。

为了说明基本原理,假设温度转换软件很受欢迎,我们想把它作为新包贡献给Go社区,我们应该怎么做呢?

我们新建一个 tempconv的包,

package tempconv

import "fmt"

type Celsius float64
type Fahrenheit float64

const(
    AbsoluteZeroC Celsius = -273.15
    FreezingC Celsius = 0
    BoilingC Celsius = 100
)

func (c Celsius) String() string{
    return fmt.Sprintf("%g°C",c)    
}

func (f Fahrenheit) String() string{
    return fmt.Springf("%g°F",f)
}

我们把转换函数写在conv.go文件里面

//CToF 把摄氏温度转换为华氏温度
func CToF(c Celsius) Fahrenheit{
    return Fahrenheit(c*9/5 + 32)
}
//FTOC把华氏温度转换为摄氏温度
func FToC(f Fahrenheit) Celsius{
    return Celsius((f-32) *5 /9)
}

每一个文件的开头用package声明定义包的名称。当导入包时,它的成员通过tempconv.CToF等方式被引用。如果包级别的名字(像类型和常量)在包的一个文件中声明,就像所有的源代码在同一个文件中一样,他们对于同一个包的其他文件是可见的。

因为包级别的常量以大写开头,所以它们也可以使用修饰过的名称(如:tempconv.AbsluteZeroC)来访问。

fmt.Printf("Bad! %v\n",tempconv.AbsluteZeroc) //"Bad! -273.15°C"

如果我们需要使用tempconv包里的函数,只需要将我们写好的tempconv引入需要使用的包里即可,按照如下方式使用:

fmt.Println(tempconv.CToF(tempconv.BoilingC)) // "212°F"

此外,我们应该养成一个好习惯,在每个包的前面用一段话对这个包进行简洁的描述。如果功能比较复杂,我们就需要单独新建一个文件,doc.go用该文件进行包的详细描述。

相关文章

  • Go语言之包和文件

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

  • go语言build和install, 以及包名的关系

    这篇文件介绍go build与go install的用法,包括包和可执行文件的关系,包的命名关系。 用法 $ go...

  • build-webapp-with-go 前两章笔记(go 基础

    第一章 go build带有main的文件go install包文件 获取远程包go get github.com...

  • Golang io reader writer

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

  • mac 上卸载go

    1、删除go安装包前往文件夹 ,删除go文件夹/usr/local/go2、删除环境遍历前往文件夹,删除go文件/...

  • Go程序结构

    go 文件的后缀是 .go。 package main 表示该 hello.go 文件所在的包是 main, 在 ...

  • Go语言文件操作

    如何打开和关闭文件 在Go语言中的OS包提供了一个函数,叫做open,就是专门用来打开文件的 在Go语言中OS包中...

  • 源码文件的分类和含义(一)

    Go源码文件 名称以.go为后缀,内容以Go语言代码组织的文件多个GO源码文件是需要用代码包组织起来的 源码文件分...

  • Go语言之旅:包

    每个 Go 程序都是由一些包组成的。 原文地址:https://golang-book.readthedocs.i...

  • Go语言_go install 与 go build 的区别

    相同 都可以生成可执行文件 不同 go install 能生成包go build 不能生成包 实验证明以上相同和不...

网友评论

      本文标题:Go语言之包和文件

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