Go语言入门到实战——00主目录 在上一讲中我们已经学习如何按照配置环境以及编写第一个go语言程序和go的一些注意点。
一.编写Go语言里的测试文件
go语言的测试用例的编写需要下面几点:
1.源文件以_test结尾:xxx_test.go
2.测试方法需要以Test开头:func TestXXX(t *testing.T){...}
上面是一个例子,package后面的包名可以自己随便取,但是我这里在运行的时候遇到了一点问题,我们运行测试用例是需要将当前路径切换到helloworld_test.go
的目录下,执行 go test -v
却出现了下面所示的错误。
参考了这篇博客得以解决解决vscode 报错 go: go.mod file not found in current directory
2.变量和常量
下面三个例子程序是一样的效果:
package test
import "testing"
var a int //全局变量
func TestHelloWorld(t *testing.T) {
a = 1
var b int = 1 //局部变量,局部变量赋予初值后如果不使用会报错,当然默认的初值是0(不使用也会报错)
t.Log(a, " ")
//for循环
for i := 0; i < 5; i++ {
t.Log(b, " ")
tmp := a //‘:=’用于直接声明一个变量并赋值,类型会进行自动判断
a = b
b = tmp + b
}
}
package test
import "testing"
func TestHelloWorld(t *testing.T) {
var (
a = 1//这两行可以不写变量类型,因为会进行自动的推断,如果只有1个变量直接写var a = 1即可
b = 1
)
t.Log(a, " ")
//for循环
for i := 0; i < 5; i++ {
t.Log(b, " ")
tmp := a //‘:=’用于直接声明一个变量并赋值,类型会进行自动判断
a = b
b = tmp + b
}
}
package test
import "testing"
func TestHelloWorld(t *testing.T) {
a := 1
b := 1
t.Log(a, " ")
//for循环
for i := 0; i < 5; i++ {
t.Log(b, " ")
tmp := a //‘:=’用于直接声明一个变量并赋值,类型会进行自动判断
a = b
b = tmp + b
}
}
go语言还有一个语句赋值方式:
a,b,c = b,a,c:表示a的值为原来的b,b的值为原来的a,c的值还是为c
总结:
从以上的情况我们可以将go的变量赋值与其它的主流的语言进行对比发现一下两点:
1.赋值可以进行类型的自动判断
2.一个赋值语句可以进行多个变量的同时赋值
接下来我们需要说的是常量的定义:
go语言的常量定义与其它编程语言的区别在于,它可以快速设置连续值。
//iota具有自增的性质,初始值为0
package test
import "testing"
func TestHelloWorld(t *testing.T) {
const (
Monday = iota + 1
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
)
t.Log(Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday)
}
package test
import "testing"
func TestHelloWorld(t *testing.T) {
const (
Monday = 1 << iota
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
)
t.Log(Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)
}