6

Go中的工程管理

 5 years ago
source link: https://studygolang.com/articles/15222?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

一、工作区:

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

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

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

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

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

二、包:

我们创建的的自定义包最好 放在 GOPATH src 目录下 (或者 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 函数。

EBBRFzU.png!web

四,导入包使用关键字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函数。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK