程序员开源工具技巧架构算法设计模式和编程理论

Go语言:入门

2017-02-25  本文已影响240人  linjinhe

C++的代码的组织,依赖的管理规定几乎为零。学习golang的时候,一上来就是看语法,看代码,在代码组织和依赖管理这里碰了不少壁,所以重新看了一下官方文档,并做下备忘。

注意:Go是跨平台的,本文基于Ubuntu(Linux)

安装/升级

  1. 下载最新版的安装包。
  2. 如果升级,需要先删除旧版本:rm /usr/local/go
  3. 把解压后的目录安装(复制)到/usr/local/go
  4. 设置环境变量在$HOME/.profile文件中加上export PATH=$PATH:/usr/local/go/bin
  5. 查看你安装的go版本go version
  6. 更多详细请查看官方文档

开始写Go代码

说明

Workspaces

一个Workspace下有三个目录:

GOPATH

export PATH=$PATH:$(go env GOPATH)/bin

第一个程序

假设你的代码的base path是github.com/user

package main

import "fmt"

func main() {
    fmt.Println("Hello World")
}

第一个包(package)

package stringutil

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)
}
package main

import (
    "fmt"

    "github.com/JinheLin/stringutil"
)

func main() {
    fmt.Println(stringutil.Reverse("!oG ,olleH"))
}

第一个测试

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)
        }
    }
}

总结

参考文档

上一篇下一篇

猜你喜欢

热点阅读