1.2构建第一个GO应用

GOPATH

go命令依赖于一个重要的工作环境,$GOPATH(上篇文章已设置)

注:这个不是Go安装目录,下面以我自己的工作目录为例子,请替换为自己的工作目录

$GOPATH允许多个目录,多个目录时使用分隔符分隔,windows系统使用分号,linux使用冒号

$GOPATH目录约定有三个子目录

  • src:存放源代码
  • pkg:编译后生成的文件
  • bin:编译后生成的可执行的文件

应用目录

$GOPATH/src目录下,新建立目录mypackage,在目录mypackage下新建hello.go文件

文件内容如下:

package mypackage

import (
    "fmt"
)

func HelloWorld() {
    fmt.Println("Hello world!")
}

这样我们的第一个应用包就完成了,注意:一般建议package的名称和目录名称保持一致。

编译应用

在上面已经新建立了第一个应用包mypackage,那么该如何编译呢?

有两种选择

  1. 在对应的目录下执行go install,就可以安装了
  2. 在任意目录下执行go install mypackage

在目录$GOPATH下就可以看到生成了mypackage.a文件

接下来我们新建一个应用gotest,新建目录$GOPATH/src/gotest
然后再目录下新建文件main.go,文件内容如下:

package main

import (
    "mypackage"
)

func main() {
    mypackage.HelloWorld()
}

进入应用目录,执行go build 命令,那么该应用目录下会有个gotest的可执行文件(windows下是gotest.exe)

go build 会自动编译依赖的应用包。

输入命令

gotest

输出

Hello world!

安装应用

在应用目录gotest下执行名

go install

那么在$GOPATH/bin/下增加了一个可执行文件gotest,这样可以在命令行输入如下命令就可以执行(我们已经设置了环境变量$GOPATH/bin

gotest

输出

Hello world!

获取第三方包

在使用第三方包是,必须先获取该包,如:在命令行中输入

go get github.com/bitly/go-simplejson

该命令会自动获取该包依赖的其它第三方包,另外加上-u 参数可以自动更新包。通过这个命令可以获取相应的源码,对应的开源平台采用不同的源码控制工具,例如github采用git、googlecode采用hg,所以要想获取这些源码,必须先安装相应的源码控制工具。另外但GOPATH是多个目录时,默认放在第一个目录下

那么在我们本地 $GOPATH/src 目录下就有了如下的文件:

$GOPATH
    bin
     |--gotest
           |-- gotest.exe
    pkg
     |--对应平台(如:windows_amd64、linux_amd64)
           |-- mypackage
                  |--mypackage.a
    src
     |-- github.com
           |-- bitly
                |-- go-simplejson
     |-- mypackage
            |-- hello.go
     |-- gotest 
            |-- main.go
            |-- gotest.exe

第三方包的使用

编辑$GOPATH/src/gotest/main.go 文件,内容如下:

package main

import (
    "fmt"
    "github.com/bitly/go-simplejson"
    "mypackage"
)

func main() {
    mypackage.HelloWorld()

    jsonString := "{\"username\":\"blue bird\",\"age\":28}"

    json, err := simplejson.NewJson([]byte(jsonString))
    if err != nil {
        fmt.Println("error", err)
        return
    }

    username, _ := json.Get("username").String()
    age, _ := json.Get("age").Int()

    fmt.Printf("username=%s,age=%d\n", username, age)
}

在对应应用目录下输入命令

    $GOPATH/src/gotest> go build
    $GOPATH/src/gotest> gotest.exe

运行结果如下:

    Hello world!
    username=blue bird,age=28
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值