前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go语言:入门

Go语言:入门

作者头像
linjinhe
修改2018-06-06 22:55:02
5760
修改2018-06-06 22:55:02
举报
文章被收录于专栏:linjinhe的专栏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代码

说明

  • 在go中,一般把所有代码放在一个workspace(工作空间下)。
  • 这个workspace下可能会有很多使用不同版本控制工具的代码仓库。
  • 每个仓库有一个到多个package。
  • 每个package由一个到多个go源码文件组成。

Workspaces

一个Workspace下有三个目录:

  • src 存放Go源码,包括自己写的代码和import的第三方代码。
  • pkg存放包对象——编译后的二进制目标文件。
  • bin存放可执行文件。

GOPATH

  • 环境变量GOPATH就是你的workspace的路径。默认是$HOME/go。注意:GOPATH不能与go的安装路径相同。
  • go env GOPATH:查看当前生效的GOPATH的值。
  • 为了方便,可以将$GOPTH/bin路径加入到$PATH
代码语言:javascript
复制
export PATH=$PATH:$(go env GOPATH)/bin

第一个程序

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

  • 创建你的代码base path:mkdir -p $GOPATH/src/github.com/user
  • 创建你的第一个程序的目录:mkdir -p $GOPATH/src/github.com/user/hello
  • 在你的程序目录下创建一个源文件hello.go
代码语言:javascript
复制
package main

import "fmt"

func main() {
    fmt.Println("Hello World")
}
  • 编译 :
    • go build github.com/user/hello在当前路径生成可执行文件。
    • go build在hello目录下执行(下面go install go test都类似)。
    • go install github.com/user/hello$GOPATH/bin目录下生成可执行文件。

第一个包(package)

  • 创建代码路径:mkdir -p $GOPATH/src/github.com/user/stringutil
  • 在目录下创建源文件reverse.go
代码语言:javascript
复制
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)
}
  • 执行go build github.com/user/stringutil不会生成任何东西,但是如果代码有问题会报错。
  • 执行go install github.com/user/stringutil在生成二进制目标文件。
  • 修改hello.go的代码,让它调用stringutil.Reverse
代码语言:javascript
复制
package main

import (
    "fmt"

    "github.com/JinheLin/stringutil"
)

func main() {
    fmt.Println(stringutil.Reverse("!oG ,olleH"))
}
  • 编译执行

第一个测试

  • go提供了一个轻量级测试框架,主要由go test命令和package testing组成。
  • go规定测试代码的文件名为xxx_test.go:在stringutils下为reverse.go创建一个测试代码文件reverse_test.go。
代码语言:javascript
复制
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 github.com/user/stringutil

总结

  • 学习go的安装和相关代码路径环境变量。
  • 学习go代码的组织结构。
  • 学习go package的基本管理。

参考文档

  • How to Write Go Code
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.02.25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装/升级
  • 开始写Go代码
    • 说明
      • Workspaces
        • GOPATH
        • 第一个程序
        • 第一个包(package)
          • 第一个测试
          • 总结
          • 参考文档
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档