如何使用Go编程

实验要求

仔细阅读 官方文档 如何使用Go编程 ,并按文档写第一个包,做第一次测试。``

实验内容

编写第一个程序,hello.go,学会使用package,学会使用go语言的基本命令,简单掌握测试方法。

实验过程
编写helloworld

在用户目录中创建第一个程序。
在这里插入图片描述
代码如下:

package main

import "fmt"

func main() {
	fmt.Printf("Hello, world.\n")
}

使用go工具构建安装此程序。
在这里插入图片描述
install命令可以在系统的任何地方运行。go 工具会根据之前设置的环境变量,在 github.com/user/hello 包内查找源码。也可以进入目录下直接使用 go install命令。
该命令会在目录bin下生成对应的二进制文件。
在这里插入图片描述
可以通过在命令行输入它的路径来运行它。
在这里插入图片描述
如果使用源码控制系统,那现在就该初始化仓库,添加文件并提交你的第一次更改了。
具体的仓库构建方法可以参考我的另一篇博客。
创建git本地仓库并绑定github对应的远程仓库

编写第一个库

将包的路径设为使用 github.com/user/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中需要将函数名首字母大写才能在包外访问该函数。
在这里插入图片描述
使用go build命令测试该包编译,和go install命令不同的是,该命令不会生成输出文件。
此时我们查看工作目录下的pkg文件夹,可以找到stringutil的包。
在这里插入图片描述
修改原来的hello.go文件来使用此包。

package main

import (
	"fmt"

	"github.com/user/stringutil"
)

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

go install之后会自动将调用的stringutil也安装,将会看到输出了一条反向信息。
在这里插入图片描述
此时可以观察到工作空间如此:
在这里插入图片描述
注意在go语言中,包名应该与路径的最后一个元素相同。

测试reverse.go

在同一目录下创建测试文件,格式应为,以 _test.go 结尾的,包含名为 TestXXX 且签名为 func (t *testing.T) 函数的文件。
在这里插入图片描述

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 工具可通过此特性来从远程代码库自动获取包,不过遗憾的是难以在本地区实现,在安装go语言工具和gotour的过程中深有体会。

心得与体会

本次实验算是学习go语言以来的第一次实践,让我体会到go语言相比c++等其他语言方便的特性,在编写代码上更为放松,将更多工作交给编译,解放了程序员的思考。
在配置go语言的环境以及安装gotour的过程中,我感到了网络封锁带来的不便,在这样一个开源的时代,我期待更便于交流的网络环境。
同时经过本次的入门作业和快排算法的编写作业,我更加认识到主动查找资料积极思考的重要性,加强实践才能更好地吸收课上所学知识。

传送门

GitHub链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值