温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Go中的工程管理

发布时间:2020-07-18 03:23:03 来源:网络 阅读:1091 作者:ck_god 栏目:编程语言


一、工作区:

其实就是一个对应于特定工程的目录,它应包含3个子目录:src目录、pkg目录和bin目录。

src目录:用于以代码包的形式组织并保存Go源码文件。(比如:.go .c .h .s等)

pkg目录:用于存放经由go install命令构建安装后的代码包(包含Go库源码文件)的“.a”归档文件。

bin目录:与pkg目录类似,在通过go install命令完成安装后,保存由Go命令源码文件生成的可执行文件。

若环境变量GOPATH中包含多个工作区的目录路径,像这样执行go install命令就会失效,此时必须设置环境变量GOBIN


二、包:


我们创建的的自定义包最好放在GOPATHsrc目录下(或者GOPATH src的某个子目录)。

Go语言中,代码包中的源码文件名可以是任意的。但是,这些任意名称的源码文件都必须以包声明语句作为文件中的第一行,每个包都对应一个独立的名字空间。

package calc

包中成员以名称⾸字母⼤⼩写决定访问权限:

public: ⾸字母⼤写,可被包外访问

private: ⾸字母⼩写,仅包内成员可以访问


注意:同一个目录下不能定义不同的package

三、main包。

init函数(能够应用于所有的package),建议用户在一个package中每个文件只写一个init函数

main函数(只能应用于package main),package main就必须包含一个main函数.


行顺序

1)每个包可以包含任意多个 init 函数,这些函数都会在程序执行开始的时候被调用。所有被编译器发现的 init 函数都会安排在 main 函数之前执行。init 函数用在设置包、初始化变量或者其他要在程序运行前优先完成的引导工作。

2)程序的初始化和执行都起始于main包。如果main包还导入了其它的包,那么就会在编译时将它们依次导入。

3)有时一个包会被多个包同时导入,那么它只会被导入一次(例如很多包可能都会用到fmt包,但它只会被导入一次,因为没有必要导入多次)。

4)当一个包被导入时,如果该包还导入了其它的包,那么会先将其它包导入进来,然后再对这些包中的包级常量和变进行初始化,接着执行init函数(如果有的话),依次类推。

5)等所有被导入的包都加载完毕了,就会开始对main包中的包级常量和变量进行初始化,然后执行main包中的init函数(如果存在的话),最后执行main函数。

Go中的工程管理

四,导入包使用关键字import。

一)、import可以是相对路径,也可以是绝对路径。

//方法1

import  "fmt"

import "net"


//方法2

import (

    "fmt"

    "net"

)

二)、包的查找路径。

 1)标准库中的包会在安装 Go 的位置找到; 2) Go开发者创建的包会在GOPATH环境变量指定目录里查找。

 3)如果编译器查遍 GOPATH 也没有找到要导入的包,那么在试图对程序执行 run 或者 build

  的时候就会出错。


三)点操作,别名操作和_操作。

1)点操作:

import (

    //这个点操作的含义是这个包导入之后在你调用这个包的函数时,可以省略前缀的包名

     . "fmt"

)


func main(){

    Println("Hello go!")

}

2)别名操作

import (

    io "fmt" //fmt改为io

)

func  main(){

    io.Println("hello go") //通过io别名调用

}

3)_操作

import (

    _"fmt"

_操作其实是引入改包,而不直接使用包里面的函数, 而是调用了该包里面的init函数。







向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI