Day16-打包自己的 Go package

前言

在前面的文章,有稍微解说 Go 语言的 package 的机制,有内建套件或是第三方提供的套件,那如果自己在开发一个专案时,并且需要开发一个套件,以供专案使用时,那麽如何打包一个 package 呢?本篇文章就会教你如何打包一个package。

Package

套件是 Go 语言程序码的集合,是一种程序码模组化与重用的方式,在开发使,很难不用到套件,像是在前几篇文章时,我们大量使用 Go 语言内建函式库中的 fmt 或是time 套件。

这时你要开发一个套件,你必须先为他命名:

package <packagename>

我们之前有提到,上面的 package 宣告必须是 Go 档案中的第一行程序码,而在同一个目录下,同层档案的都属於同一个 package。

再来你的 package 中一定会有几个 function,以 fmt 为例,在这个 package 里有许多我长用的 function,如 Println()、Printf() 或 Scanl(),而你可以发现到,这些 function 字首都为大写,这是因为,
大写开头的 function,才可以供其他 package 使用,
若是小写,该 function 只提供该 package 使用。

范例

这里直接带一个范例:

package stat
 
func Mean(data []float64) (mean float64){
   var sum float64
 
   for _, v := range data{
       sum += v
       }
 
   mean = sum/float64(len(data))
   return  
}

上述做了一个简单统计的 package,其中一个 function,为 Mean,为对一组数据取平均值,如此就打包好了属於你自己的 package 了,接着你可以上传到你的 github 之类的,当成第三方套件供大家使用,是不是很简单呢!

结语

上述说明了 package 的作用,也做了一个简易的 package 示范,看似简单,但是其实把功能独立成一个 package,是非常重要的,虽然不这麽做,也可以建立一个专案,但是这有关於可读性的问题,能够区分出较整齐较完整的结构,我想大家比较能够理解整个专案的架构。感谢今天各位读者的阅读,希望今天的文章对各位有帮助!


<<:  GCP VPC防火墙

>>:  Day9 - 期货contract及读取报价方式

ISO 27001 机房管理部份之二

定义 : ISO 27001 ISMS 导入适用范围:机房管理、网路管理、BPM、ERP系统开发及维...

[13th][Day7] container 处理程序

在 container 中运行後台任务 docker exec -d daemon_eric tou...

vectorize VS label encoded

很多模型只能够处理数字,所以当我们有类别变数的时候需要先转换成数字,而转换的方法有两种, 针对类别变...

求救! 网站背景无法显示

我的网站在电脑上显示的画面是正常的,但是一上传到服务器上,背景和影片就无法显示了,到底是为什麽~~ ...

JS30 Day 27 - Click and Drag学习笔记

这次的功能主要是做画面的一个点击拖曳,当点击後往左拖曳画面会往右跑,反之。 主要之架构。 <...