zoukankan      html  css  js  c++  java
  • go入门-001-开发环境

    安装go

    Windows环境,下载msi文件,打开安装,一路next。默认会将Go放到 c:Go ,同时会把 c:Goin 加入PATH环境变量。

    测试下hello,world:

    工作空间

    go是一门现代语言,当然要体现现代开发的风格,其中之一就是开源风格,Go代码必须放在工作空间内,它包含三个子目录:

    • src目录包含Go的源文件,它们被组织成包(每个目录都对应一个包),
    • pkg目录包含包对象,
    • bin目录包含可执行命令。

    src目录通常包会含一个或多个版本控制的代码仓库,以此来跟踪一个或多个源码包的开发。go工具用于构建源码包,并将其生成的二进制文件安装到pkg和bin目录中。

    官方教程的工作空间目录示例:

    GOPATH环境变量

    GOPATH环境变量指定工作空间位置。注意,它绝对不能和你的Go安装目录相同。

    zhaww29579@WINDOWS-A4Q7LQG MINGW64 ~/Desktop
    $ echo $GOPATH
    D:go_workspace
    

    作为约定,将此工作空间的bin子目录添加到你系统环境变量PATH中:

    $ export PATH=$PATH:$GOPATH/bin
    

    包路径

    标准库中的包有给定的短路径,比如"fmt"和"net/http"。对于你自己的包,你必须选择一个基本路径,来保证它不会与将来添加到标准库,或其它扩展库中的包相冲突。

    如果你将你的代码放到了某处的源码库,那就应当使用该源码库的根目录作为你的基本路径。例如,若你在GitHub上有账户github.com/user那么它就应该是你的基本路径。

    我的github账号名是caffebabe,所以用github.com/caffebabe作基本路径。

    $ mkdir -p $GOPATH/src/github.com/caffebabe
    

    第一个程序

    要编译并运行程序,首先要选择包路径,并在工作空间内创建相应的包目录:

    $ mkdir $GOPATH/src/github.com/caffebabe/hello
    

    接着,在该目录中创建名为 hello.go 的文件,其内容为以下Go代码:

    package main
    
    import "fmt"
    
    func main() {
        fmt.Printf("Hello, world.
    ")
    }
    

    现在你可以用 go 工具构建并安装此程序了:

    $ go install github.com/caffebabe/hello
    

    注意,你可以在系统的任何地方运行此命令。go工具会根据 GOPATH 指定的工作空间,在github.com/user/hello包内查找源码。

    此命令会构建 hello,产生一个可执行的二进制文件。接着它会将该二进制文件作为 hello(在 Windows 下则为 hello.exe)安装到工作空间的 bin 目录中。

    运行:

    $ hello
    Hello, world.
    

    此命令生效是因为之前已经将 $GOPATH/bin 添加到 PATH 中了。

    若你使用源码控制系统,那现在就该初始化仓库,添加文件并提交你的第一次更改了。

    $ cd $GOPATH/src/github.com/caffebabe/hello
    $ git init
    $ git add hello.go
    $ git commit -m "initial commit"
    $ git remote add origin https://github.com/caffebabe/hello.git
    $ git push -u origin master
    

    第一个库

    让我们编写一个库,并让 hello 程序来使用它。

    同样,第一步还是选择包路径并创建包目录:

    $ mkdir $GOPATH/src/github.com/caffebabe/stringutil
    

    接着,在该目录中创建名为 reverse.go 的文件,内容如下:

    // stringutil 包含有用于处理字符串的工具函数。
    package stringutil
    
    // Reverse 将其实参字符串以符文为单位左右反转。
    func Reverse(s string) string {
        r := []rune(s)
        for i, j := 0, len(r)-1; i < len(r)/2; i, j = i+1, j-1 {
            r[i], r[j] = r[j], r[i]
        }
        return string(r)
    }
    

    现在用 go build 命令来测试该包的编译:

    $ go build github.com/caffebabe/stringutil
    

    这不会产生输出文件。想要输出的话,必须使用 go install 命令,它会将包的对象放到工作空间的 pkg 目录中。确认 stringutil 包构建完毕后,修改原来的 hello.go 文件:

    package main
    
    import (
        "fmt"
        "github.com/user/stringutil"
    )
    
    func main() {
        fmt.Printf(stringutil.Reverse("!oG ,olleH"))
    }
    

    无论是安装包还是二进制文件,go工具都会安装它所依赖的任何东西。 因此当我们通过

    $ go install github.com/caffebabe/hello
    

    来安装 hello 程序时,stringutil包也会被自动安装。运行此程序的新版本,你应该能看到一条新的,反向的信息:

    $ hello
    Hello, Go!
    

    测试

    Go拥有一个轻量级的测试框架,它由 go test 命令和 testing 包构成。
    我们可通过创建文件 $GOPATH/src/github.com/caffebabe/stringutil/reverse_test.go 来为 stringutil 添加测试,其内容如下:

    package stringutil
    
    import "testing"
    
    func TestReverse(t *testing.T) {
        cases := []struct {
            in, want string
        }{
            {"Hello, world", "dlrow ,olleH"},
            {"Hello, 世界", "界世 ,olleH"},
            {"", ""},
        }
        for _, c := range cases {
            got := Reverse(c.in)
            if got != c.want {
                t.Errorf("Reverse(%q) == %q, want %q", c.in, got, c.want)
            }
        }
    }
    

    接着使用 go test 运行该测试:

    $ go test github.com/caffebabe/stringutil
    ok      github.com/caffebabe/stringutil 0.210s
    

    GO IDE

    选择自己熟悉的就行,我个人喜欢VS Code。CTR+SHIFT+X安装VS Code的GO扩展,CTR+SHIFT+P,输入GO:Install,选择安装/更新go工具。不出意外的话,会安装失败,因为被墙了。

    解决办法很多,参考这篇博文的解决办法:

    go env -w GOPROXY=https://goproxy.cn,direct
    
  • 相关阅读:
    747. Largest Number Greater Than Twice of Others 最大数量大于其他两倍
    Python代码规范和命名规范
    Pycharm2018中DataBase的使用
    Pycharm新建文件css文件无后缀,html中无法正确引入
    Pycharm DataBase Navigator Plugins 使用
    Python怎么去写单元测试用例去测试hello world呢
    最近的电视剧推荐
    RobotFrameWork基本语法练习
    RobotFrameWork中使用自定义关键字
    Windows下同时安装了Python2与Python3时如何使用RobotFrameWork
  • 原文地址:https://www.cnblogs.com/teacherma/p/13329271.html
Copyright © 2011-2022 走看看