zoukankan      html  css  js  c++  java
  • go 学习笔记(1)--package

     

    https://www.cnblogs.com/saryli/p/9911218.html

    引入包有以下几种方式:

    1. 最简单的方式引入一个包的方式是直接引入包,例如:

        import "fmt"

        import "os"

    2. 也可以通过下面的方式将包一块引入,并写在括号内:

        import (

          "fmt"

          "os"

        )

    通过上面的方式,可以引入系统包或第三方的包,下面重点介绍如何引入自定义的包和函数:

     一般我们将主程序放在src的main文件夹下(主程序中包含main函数,并将主程序的包名写为package main),将其他模块放在相应的文件夹下,例如下图所示

       

    主函数在main.go文件中,主函数名也可以为其他,但必须包含main函数。在Go编程中,怎么引入自己编写的模块呢,例如在main.go中如何调用add.go、subtract.go或者是multiply.go中的文件。

    add.go与subtract.go在cal文件夹下,所以这两个程序的包名为cal(package cal),multiply.go在multi文件夹下,所以程序的包名为multi(package multi)。如果main函数要调用add.go或者subtract.go中的函数,必须要引入包"cal"(import "cal")。要调用multiply.go中的函数,那就要引入包"multi",如果我们在程序中直接写import "multi",编译器会提示我们can not find package "multi"。因为我们的"multi"包在包"cal"下,所以我们要把包名写完整"cal/multi",下面就可以调用各个文件中的函数了。

    Go中如果函数名的首字母大写,表示该函数是公有的,可以被其他程序调用,如果首字母小写,该函数就是是私有的,因此我们只能调用add.go、subtract.go或者multiply.go中的公有函数。具体调用如下图:

    最后注意:文件名可以和该包名不一致,但文件中使用的包名必须要和该包名一致。

    包的命名

    go语言的包的命名,遵循简洁、小写、和go文件所在目录同名的原则,这样就便于我们引用,书写以及快速定位查找。对于在企业当中开发的程序而言,我们一般采用域名作为顶级包名的方式,这样就不用担心和其他开发者包名重复的问题了,比如公司的域名是`www.bboyHan.com`,那么开发的go程序都以`bboyHan.com`作为全路径中的最顶层部分,导入开发的工具包则可以写为:

    1
    2
    3
    package main
      
    import "bboyHan.com/utils"

     

    Main

    当把一个go文件的包名声明为main时,就等于告诉go编译程序,这是一个可执行程序,那么go编译程序就会尝试把它编译为一个二进制的可执行文件。如果没有这个函数,程序就无法执行。

    Go编译器又是如何去寻找各个文件、包之间的依赖关系而构建程序的呢?

    环境变量GOROOT和GOPATH两个概念,这是两个定义路径的环境变量,GOROOT是安装Go的路径,比如 C:go ;GOPATH是我们自己定义的开发者个人的工作空间,比如C:workspacesrcbboyHan。

    编译器会使用我们设置的这两个路径,再加上import导入的相对全路径来查找磁盘上的包,比如我们导入的fmt包,编译器最终找到的是 C:gofmt 这个位置。对于包的查找,是有优先级的,编译器会优先在GOROOT里搜索,其次是GOPATH,一旦找到,就会马上停止搜索。如果最终都没找到,就会报编译异常了。

  • 相关阅读:
    [原]Unity3D深入浅出
    [原]Unity3D深入浅出
    [原]Unity3D深入浅出
    [原]Unity3D深入浅出
    [原]Unity3D深入浅出
    [原]Unity3D深入浅出
    [原]Unity3D深入浅出
    SSH 远程端口转发
    SSH 本地端口转发
    SSH执行远程命令和传送数据
  • 原文地址:https://www.cnblogs.com/fengff/p/11430692.html
Copyright © 2011-2022 走看看