美文网首页golang
Go语言学习笔记09.工程管理

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

作者: 快乐的提千万 | 来源:发表于2019-11-05 16:45 被阅读0次

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

    • 文件名与包名没有直接关系,不一定要将文件名与包名定成同一个。
    • 文件夹名与包名没有直接关系,并非需要一致。
    • 同一个文件夹下的文件只能有一个包名,否则编译报错。
    • 同一个文件夹下(同一个包)互相调用函数不用引用包。(本质上可以看做是一个文件)

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

    • public: ⾸字母⼤写,可被包外访问
    • private: ⾸字母⼩写,仅包内成员可以访问

    注意:同一个目录下不能定义不同的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目录。

    • src目录:用于以代码包的形式组织并保存Go源码文件。(比如:.go .c .h .s等)
    • pkg目录:用于存放经由go install命令构建安装后的代码包(包含Go库源码文件)的“.a”归档文件。
    • bin目录:与pkg目录类似,在通过go install命令完成安装后,保存由Go命令源码文件生成的可执行文件。

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

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

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

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

    相关文章

      网友评论

        本文标题:Go语言学习笔记09.工程管理

        本文链接:https://www.haomeiwen.com/subject/llkebctx.html