Go语言之工作区

作者: 有财君 | 来源:发表于2019-05-08 23:33 被阅读9次

    1. 学Java的时候遇到的问题

    上大二的时候,我们开了面向对象的课程,用了Java语言。第一节课下来,老师让我们自己写一个类似Hello World的代码。当时我们用的是这样的一种方式:

    1. 首先编写一个Hello.java;
    2. 用javac命令编译成class文件;
    3. 用java命令运行class文件,观察输出。

    当时所有的书上都有参考,看起来这也很简单,但是实际操作的时候却发现总是提示classpath的问题。

    在当时jdk1.2的情况下,classpath算是初学者的一个拦路虎了。

    刚学Go语言的时候很多书上也是讲了要首先写一个go文件,然后用go run命令把这个文件跑起来观察输出。

    当然也可以首先build生成可执行文件然后执行可执行文件,这一切都很像Java,而且Go还有个参数,GOPATH,也是无比的像Java,让我又回忆起了很多年前的大学时光,回忆起了classpath这个拦路虎。

    2. GOPATH

    当时解决classpath问题无非也就是查询搜索引擎,但是我发现用eclipse能规避这个问题。其实eclipse这种IDE帮我们做了很多事情,然后让我们少学了不少应该学到的知识。

    当我准备学Go的时候,选择了Goland作为IDE,新建工程的时候,发现工程被默认的放在了“/User/myname/go”下面,用go env命令观察,这个目录就是所谓的GOPATH。

    也就是说,GOPATH是我们的工作区,所有的代码都可以在这里编写,Goland默认建立的awesomeProject就在这里。

    现在来看看这段代码结构:

    代码结构

    再来看看代码,首先看Hello.go:

    package main
    
    import "awesomeProject/day1"
    
    func main() {
        day1.SayHello()
    }
    

    再来看看hello_lib.go:

    package day1
    
    import "fmt"
    
    func SayHello() {
        fmt.Println("Hello, World!")
    }
    

    先说hello_lib.go,这个文件声明了一个包,这个包叫做day1,这里只有一个方法叫做SayHello,只会有一段简单的输出。

    实际上这种文件叫做库源码文件,有点类似于Java的类,能够实现功能。说起Java了,就想起了Java的包,也可以通过import的方法引入到自己的代码中,然后利用引入类,实现需要的功能。

    Go也不例外。而且Go引入包,其实很像Java。现在可以来看看Hello.go的引入了。但是注意,这里的import没有写绝对路径,而是写了一个相对路径。实际上,只要写上这个包在GOPATH中的路径就可以了,GOPATH不需要写。

    现在我的系统里GOPATH是“/User/myname/go”,这个目录下面,会有三个约定好的目录:

    • src:源码都放在这里,这里面不同的工程分成不同的目录就可以了;
    • pkg:库源码文件,进行了install之后,就会放在这里,这里都是归档文件;
    • bin:工程build之后,会生成可执行文件,就在这个目录里。

    以我刚才写的hello_lib为例,执行这个命令:

    go install awesomeProject/day1
    

    观察pkg目录:

    lib目录

    注意这里多了一个darwin_amd64,这是平台相关的,install之后生成的是归档文件,后缀名为.a。

    如果执行这个命令:

    go install awesomeProject
    

    这时会生成可执行文件,会放在bin目录下面,这是可执行文件,可以直接执行。

    3. 别人家的例子

    Java可以用maven的pom文件自行下载jar包,很方便。我还是很想用Go来操作MySQL的,要操作数据库就要有驱动。Go的MySQL驱动是这样的安装的:

    go get -u github.com/go-sql-driver/mysql
    

    github的访问非常缓慢,因此我首先把这个代码放在了码云上:

    go get gitee.com/zhiyoucai/mysql
    

    很快就好了,此时观察一下pkg目录:

    驱动

    此时,这个驱动就被安装到了pkg目录下。此时因为是放在了GOPATH下,因此是可以直接引用这个包的。

    4. 小结

    上面的例子中算是讲明白了什么叫做GOPATH,其实就是工作区,所有的Go相关的工作都要在这个工作区内进行。

    虽然内容基本,但是很重要,毕竟我们学一门语言是面向写工程代码的,而不是写一个工具出来玩玩。

    相关文章

      网友评论

        本文标题:Go语言之工作区

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