golang

Go语言学习笔记09.工程管理

2019-11-05  本文已影响0人  快乐的提千万

简单地理解就是一组源码看做一个包,这些源码都放在一个目录下,可以被其他文件调用。每个包都对应一个独立的名字空间,这样看是不是有点像命名空间?

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

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

比如:
目录结构

- my_go
    - myLib
        - func.go
        - func2.go  
    - hello.go 

func.go

//故意和文件夹名和文件名都不一样,但是更推荐保持一致
package myLib2

//公有的
func Add(x,y int) int {
    return x + y
}
//私有的
func add(x,y int) int {
    return x + y
}

func2.go

//必须保持一致,一个文件夹里面的报名要一样
package myLib2

func Sub(x,y int) int {
    a := add(x,y) //同一包名下可以直接用,公有私有都可以
    println(a)
    return x - y
}

hello.go

package main //包名

//fmt 包实现了格式化 IO(输入/输出)
// import 倒入的其实是文件名,不是包名
import (
    "./myLib"
    "fmt"
)

func main() {
    //go里面的全局函数要首字母大写
    fmt.Println(myLib2.Add(1,1))  //使用的是包名
    fmt.Println(myLib2.Sub(1,1))
    //fmt.Println(myLib2.add(1,1)) //私有的不能用
}

包的引用方式

//忽略此包,为了只使用其init函数
import _ "fmt"

func main() {

}

//推荐
import (
    "fmt"
    "os"
)

/* 最好不要用,虽然可以简化编码,但是会不好阅读
//给包名起别名
import io "fmt"

func main() {
    io.Println("this is a test")
}
*/

/*  请忘记这个方式,别用
//.操作
import . "fmt" //调用函数,无需通过包名
import . "os"

func main() {
    Println("this is a test")
    Println("os.Args = ", Args)
}
*/

init函数和main函数

main函数就是程序入口,必须有,其所在的包就是main包,它所在的目录名或文件名也是可执行文件的文件名。
init函数也就是初始化函数或者叫构造函数。会在函数执行前执行。
比如引入顺序A包(main包)-->B包-->C包-->D包,就会先执行D的init函数,再执行D的代码,最后执行main的init函数和main函数。

goPath

Go语言要求我们将一个工程放在叫GoPath的地方,里面包含3个子目录:src目录、pkg目录和bin目录。

go install 命令,用于编译整个工程,编译前必须要设置好goPath和GoBin。
go env 命令,查看当前的go环境,里面就有goPath

比如:
项目目录 E:\mycode\my_go

在这里插入图片描述
这里的goPath是全局的,每个项目还有个自己的,在编辑器里面配置,如果只有一个项目,可以把这个改成项目目录。
在这里插入图片描述
在windowsPowerShell里面打印

在编辑器里面打印
在这里插入图片描述
生成前:
在这里插入图片描述
此时在windowsPowerShell里面执行 go install ,则会生成目录和可执行文件:
在这里插入图片描述
上一篇下一篇

猜你喜欢

热点阅读