• 6. 工作区域与包


    其实准备之后再研究包这个东西的,但是对于Go语言包是管理源码的方式,还是仔细了解一下吧。

    之前几章的代码都是在一个go文件中测试运行的,但是实际项目肯定不止一个文件,使用包可以使Go程序更加容易维护。

    package xxx 这行代码表示此文件属于哪一个包,一般放在第一行。

    如果使用package main则表示,此文件会生成可执行文件,且必须有main函数,否则:function main is undeclared in the main package。

    【工作区】

     Go安装完毕后,GOPATH会出现在环境变量中(以windows为例),可以添加自己的工作区域。

    【创建包】

    假设工作区的路径是: D:go_workspacego,我们手动新建一个包,那么包的目录结构如下:

    src
        hello
            hello.go
    
    bin
        hello.exe

    其中bin目录是会自动生成的,包构建完毕后,我们在hello.go中放入Hello Go!测试代码。 输入 go install hello, 这是使用install编译,而且不需要切换到源码路径下。

    如果编译成功,那么bin目录会自动生成,hello.exe也会在bin目录下。

    【调用其他包】

    再创建一个function包,新建string.go,目录结构如下:

    src
        hello
            hello.go
        function
            string.go
    
    bin
        hello.exe
    

    hello.go代码

    package main 
    
    import (
        "fmt"
        "function"
    )
    
    func main() {  
        fmt.Println(function.Lower("ABC"))
        fmt.Println(function.Upper("ABC"))
    }

    string.go代码

    package function 
    
    import "strings"
    
    func Lower(str string) string {
        return strings.ToLower(str)
    }
    
    func Upper(str string) string {
        return strings.ToUpper(str)
    }

    输入 go install hello,go语言会自动在工作区下搜索包function并自动编译。

    这里要注意:导出的函数首字母必须大写。

    【init函数】

    每个包的每个go文件都可以有一个 init 函数,用于初始化,会按照编译的顺序运行。

    每个init只会运行一次,如果一个包调用了另一个包,那么被调用的包的init会先被运行。

  • 相关阅读:
    关于java中面向对象特征的总结
    Jemter TCP压测坑:Hex-encoded binary string contains an uneven no. of digits,Hex-encoded binary string contains an uneven no. of digits
    distinct&group by去重的区别
    Idea从gitee上clone项目时候相关问题
    Nginx正向代理
    docker安装MySQL5.7
    Ubuntu server18.04.5环境配置
    Ubuntu18.04.5 server wifi的连接
    git commit 提交规范
    关于js的学习的推介
  • 原文地址:https://www.cnblogs.com/hatsusakana/p/9810449.html
Copyright © 2020-2023  润新知