golang Package

前端之家收集整理的这篇文章主要介绍了golang Package前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
自定义package,首先需要设定GOPATH,这是自定义package的src文件以及生成.a文件的存放地;假设GOPATH的值为~/mypackage,则需要在mypackage目录下,创建src,bin,pkg目录,其中src目录下存放源码。pkg目录下会存放由go install生成的.a文件

此处有个一注意点。每个pkg必须是文件夹+其对应的go文件组成。假设要生成math的Average函数代码如下:

点击(此处@H_403_7@)折叠或打开

  1. package math
    @H_403_7@

  2. func Average(@H_403_7@xs [@H_403_7@]@H_403_7@float64)@H_403_7@ float64 {@H_403_7@
  3. total :@H_403_7@=@H_403_7@ float64(@H_403_7@0)@H_403_7@
  4. for@H_403_7@ _,@H_403_7@ x :@H_403_7@=@H_403_7@ range xs {@H_403_7@
  5. total +@H_403_7@=@H_403_7@ x
  6. }@H_403_7@
  7. return total /@H_403_7@ float64(@H_403_7@len@H_403_7@(@H_403_7@xs)@H_403_7@)@H_403_7@
  8. }@H_403_7@
则需要在~/mypackage/src目录下在创建 pjname/math/math.go其中go文件保存上面的代码。在此pjname目录必须存在,否则编译会报错。也许go不允许自定跟package吧。math.go的文件名可以自定义
保存完毕后,可以在math目录下运行go install,则系统会自动生成math.a文件,存放在~/mypackage/pkg/$ GOOS_GOARCH/@H_403_7@pjname/math.a;

如果没有pjname目录,而直接生成math目录,install 会报错l go install: no install location for directory /home/test/gogo/src/math outside GOPATH; 报此错是因为math是系统自带的package,用在这里冲突了。把math改为mymath就可以了;



下面写个小例子展示一下package name,import name,这两句话中的name分别对应什么?
  1. @H_403_7@当前目录是/home/test/gogo/src,设置GOPATH=/home/test/gogo@H_403_7@@H_403_7@
  2. find ./列出目录结构;@H_403_7@
  3. ./
    ./mymath
    ./mymath/math.go
    ./mymain
    ./mymain/hello.go@H_403_7@
  4. 下面列出代码math.go

    点击(此处@H_403_7@)折叠或打开

    1. package math
      @H_403_7@
    2. func Average(@H_403_7@i,@H_403_7@j int@H_403_7@)@H_403_7@int@H_403_7@{@H_403_7@
    3. return (@H_403_7@i+@H_403_7@j)@H_403_7@>@H_403_7@>@H_403_7@2
    4. }@H_403_7@

  5. 这里列出hello.go

    点击(此处@H_403_7@)折叠或打开

    1. package main
      @H_403_7@
    2. import "mymath"@H_403_7@
    3. func main(@H_403_7@)@H_403_7@{@H_403_7@
    4. print(@H_403_7@"hello world\n"@H_403_7@,@H_403_7@math.@H_403_7@Average(@H_403_7@8,@H_403_7@12)@H_403_7@)@H_403_7@;@H_403_7@

    5. }@H_403_7@
  6. 注意上面的代码,math.go 存放在mymath目录中,所以生成的package,import时写mymath;
  7. 不过在math.go中的package写的package math;,在hello.go的地4行使用时仍旧写math.Average;
  8. 所以import的是.a的文件名;
  9. 使用时该程序中的package定义的名字;
  10. 小例子只是说明对应关系,自己定义package时还是保持稳健名一致比较好了.否则其他人看代码时都不知道引用的那个文件中的了.

猜你在找的Go相关文章