MAC下 go语言环境安装及官网demo实现

我的环境:macOS:10.14.5

1 安装

1、官网地址:https://golang.org/dl/,官网下载pkg文件到本地,一路安装即可。
MAC下 go语言环境安装及官网demo实现_第1张图片MAC下 go语言环境安装及官网demo实现_第2张图片
2、安装后通过go versiongo env来查看是否安装成功
在这里插入图片描述

2 第一个工程

这里的第一个工程,参考官网的例子,https://www.youtube.com/watch?v=XCsL89YtqCs

1、创建工程文件夹

  1. 创建工程goTest1,创建src/demo/hello文件夹
    在这里插入图片描述

2、 创建第一个go文件

  1. 在hello文件中创建hello.go文件,内容如下:
package main

import "fmt"

func main(){
    fmt.Println("hello worls!")
}

  1. 在hello目录下执行go install,将其编译为可执行文件。

(1)在此之前需要先设置GOPATH,否则将会有如下报错,因为不知道将可执行文件放在哪里。
PS:go install用于编译并安装指定的代码包及它们的依赖包在这里插入图片描述(2)设置GOPATH

export GOPATH=~/Documents/goExe/goTest1/

(3)设置成功后,再执行go install,生成的可执行文件会自动生成在goTest1/bin下。此时发现根目录下多了一个bin目录。
MAC下 go语言环境安装及官网demo实现_第3张图片
4. 执行文件
==方法1:==在goTest1/bin/下,可直接执行hello文件。但是每次编译完都要去到bin目录下很不方便,所以我们可以采用方法(2)
在这里插入图片描述
==方法2:==给bin目录设置一个快捷路径,在PATH变量中添加上bin的路径:

export PATH=~/Documents/goExe/goTest1/bin:$PATH

再次在hello文件下执行hello文件,可执行成功。
在这里插入图片描述

3、包引用

那如果hello.go类想引用另一个string.go类的方法该如何处理呢

  1. 创建string.go类,路径及代码如下
    MAC下 go语言环境安装及官网demo实现_第4张图片
package string

func Reverse(s string) string{
    b := []byte(s)
    for i := 0; i < len(b)/2; i++ {
        j := len(b) - i - 1
        b[i], b[j] = b[j], b[i]
    }
    return string(b)
}
  1. 在hello.go中加上对string类的引用
    PS:这里对其他类的引用要以src目录为根目录
package main

import (
	"fmt"
	"demo/string"
)

func main(){
    fmt.Println(string.Reverse("hello world!"))
}

  1. 重新编译hello.go文件后,运行hello,发现输出成功变成了倒序
    在这里插入图片描述
  2. 若我们在string目录下,对string.go文件执行go buildgo install,则会在src目录下生成一个pkg目录,如图。
    PS:go build命令用于编译我们指定的源码文件或代码包以及它们的依赖包。
    MAC下 go语言环境安装及官网demo实现_第5张图片

4. 单元测试

  1. 在string文件夹里创建string_test.go,代码如下:
package string

import "testing"

func Test(t *testing.T) {
	var tests = []struct {
		s, want string
	}{
		{"Backword", "drowkcaB"},
		{"Hello, 世界", "界世,olleH"},
		{"", ""},
	}
	for _, c := range tests {
		got := Reverse(c.s)
		if got != c.want {
			t.Errorf("Reverse(%q) == %q, want %q", c.s, got, c.want)
		}
	}
}
  1. 在string目录下执行 go test,测试未通过,输出如下:
    在这里插入图片描述
  2. 分析报错信息,是中文乱码问题。回到string.go类,发现输入的接受类型为byte,不支持utf-8。根据案例,将其改成rune:
    MAC下 go语言环境安装及官网demo实现_第6张图片
  3. 再试下,测试通过:
    在这里插入图片描述

参考文章:https://www.cnblogs.com/fengff/p/11434399.html

你可能感兴趣的:(go)