作者:忧伤丿稻草展 | 来源:互联网 | 2023-07-31 06:44
在Ubuntu上使用golang
Go语言是一门强类型的通用编程语言。它的基础语法与C语言很类似,但对于变量的声明有所不同,也对其他的一些优秀编程语言有所借鉴。另外,Go语言支持垃圾回收。
与C++相比,Go语言并不包括如异常处理、继承、泛型、断言、虚函数等功能,但增加了 Slice 型、并发、管道、垃圾回收、接口(Interface)等特性的语言级支持。
Go语言对并发编程的支持是天生的、自然的和高效的。Go语言为此专门创造出了一个关键字“go”。使用这个关键字,我们就可以很容易的使一个函数被并发的执行。
Go是一门以软件工程为目的的语言设计:
- 快速编译
- 严格的依赖管理
- 代码风格的强一致性
- 偏向组合而不是继承
由于go语言的种种特点,其成为了云计算和服务计算开发的首选。所以借此机会,我们也学习了go语言在linux系统下的安装编写,在这里逐一介绍。
一、安装vscode
作为一款轻量级的文本编辑器,vscode一出世就引发了许多人的关注。事实上,在使用了多款编辑器之后,我发觉vscode的速度在其中是数一数二,因此这次在linux上也选择其作为go语言开发的平台。
要安装vscode,首先要安装umake。打开终端,使用下列命令,通过官方PPA来安装Ubuntu Make:
sudo add-apt-repository ppa:ubuntu-desktop/ubuntu-make
sudo apt-get update
sudo apt-get install ubuntu-make
之后再通过umake来vscode
umake web visual-studio-code
但在这一步却出现报错
提示架构冲突。索性直接去微软官网下载deb安装,简单快捷。这样我们就可以直接打开vscode了。
二、安装Golang
1、下载安装
2、环境配置
- 查看环境变量
默认的时候,GOPATH是没有配置好的,那么我们怎么修改这些环境变量呢
首先,我们可以任选一个位置建一个文件夹,比如
mkdir /home/kloijm30/go
之后打开配置文件
sudo gedit /etc/profile
在最后添加export GOPATH=/home/kloijm30/go
以及export PATH=$PATH:/home/kloijm30/go/bin
三、创建程序并编译
1、编译并运行简单的程序,首先要选择包路径(我们在这里使用 github.com/user/hello),并在你的工作空间内创建相应的包目录:
$ mkdir $GOPATH/src/github.com/user/hello
然后用vscode新建文档hello.go
package main
import "fmt"
func main() {
fmt.Printf("Hello, world.n")
}
然后直接在vscode中打开终端,进入目录输入
go run hello.go
这样就可以看到运行结果了
2、构建安装程序
在任何位置输入命令
$ go install github.com/user/hello
这样在bin文件夹中就可以看到名为hello的二进制文件了
之后我们就可以直接输入二进制文件名来运行了
如果我们安装好了git,就可以将自己的代码提交到git远程仓库,具体的方法可以参考我的
另一篇博客
四、编写一个Golang库
1、先选择包路径(我们将使用 github.com/user/stringutil) 并创建包目录:
$ mkdir $GOPATH/src/github.com/user/stringutil
2、在该目录中创建名为 reverse.go 的文件,内容如下:
// stringutil 包含有用于处理字符串的工具函数。
package stringutil
// Reverse 将其实参字符串以符文为单位左右反转。
func Reverse(s string) string {
r := []rune(s)
for i, j := 0, len(r)-1; i
3、修改hello.go文件为
package main
import (
"fmt"
"github.com/user/stringutil"
)
func main() {
fmt.Printf(stringutil.Reverse("!oG ,olleH"))
}
4、再重新安装hello.go
go install github.com/user/hello
此时运行hello
输出了逆向的字符,说明自己的库使用成功。
此时的空间格局为
五、Go语言测试
Go拥有一个轻量级的测试框架,它由 go test 命令和 testing 包构成。
你可以通过创建一个名字以 _test.go 结尾的,包含名为 TestXXX 且签名为 func (t *testing.T) 函数的文件来编写测试。
在 $GOPATH/src/github.com/user/stringutil 中创建reverse_test.go
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测试
这样便表示测试成功了。