Go语言入门到实战——00主目录 在上一讲中我们已经学习如何按照配置环境以及编写第一个go语言程序和go的一些注意点。

一.编写Go语言里的测试文件

go语言的测试用例的编写需要下面几点:

1.源文件以_test结尾:xxx_test.go
2.测试方法需要以Test开头:func TestXXX(t *testing.T){...}

GO语言的for语法 go语言示例_赋值


上面是一个例子,package后面的包名可以自己随便取,但是我这里在运行的时候遇到了一点问题,我们运行测试用例是需要将当前路径切换到helloworld_test.go的目录下,执行 go test -v却出现了下面所示的错误。

GO语言的for语法 go语言示例_edn_02


参考了这篇博客得以解决解决vscode 报错 go: go.mod file not found in current directory

GO语言的for语法 go语言示例_golang_03

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语言的for语法 go语言示例_赋值_04


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)
}

GO语言的for语法 go语言示例_赋值_05

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)
}

GO语言的for语法 go语言示例_golang_06