GO-变量、常量以及与其他语言的差异01
编写测试程序
1.源码文件以_ test结尾: xxx test. go
2.测试方法名以Test开头: func TestXXX(t *testing.T) …}
package try_test
import "testing"
func TestName(t *testing.T) {
t.Log("My first try")
}
实现Fibonacci数列
1,1,2,3,5,8,13,
package fib
import (
"fmt"
"testing"
)
func TestFibList(t *testing.T) {
//var a = 1;
//var b = 1;
var (
a int = 1;
//b int = 1;
b = 1; // 俩个类型放一起,go有类型推断能力
)
/*a := 1
b := 1*/ // 这样声明也ok
fmt.Print(a)
for i := 0; i < 5; i++ {
fmt.Print(" ", b)
tmp := a
a = b
b = tmp + a
}
fmt.Println()
}
package fib
import (
"testing"
)
func TestFibList(t *testing.T) {
//var a = 1;
//var b = 1;
var (
a int = 1;
//b int = 1;
b = 1; // 俩个类型放一起,go有类型推断能力
)
/*a := 1
b := 1*/ // 这样声明也ok
//fmt.Print(a)
t.Log(a)
for i := 0; i < 5; i++ {
//fmt.Print(" ", b)
t.Log(b)
tmp := a
a = b
b = tmp + a
}
//fmt.Println()
}
变量赋值
与其他主要编程语言的差异
- 赋值可以进行自动类型推断
在一个赋值语句中可以对多个变量进行同时赋值
// 交换值2种写法
func TestExchange(t *testing.T) {a:=1
b:=2
//tmp:=a
//a=b
//b=tmp
a,b=b,a
t.Log(a, b)
}
常量定义
package constant_test
import "testing"
const (
Monday = 1 + iota
Tuesday
Wednesday
)
func TestConstantTry(t *testing.T) {
t.Log(Monday, Tuesday, Wednesday)
}
Result:
=== RUN TestConstantTry
constant_try_test.go:12: 1 2 3
--- PASS: TestConstantTry (0.00s)
PASS
位与运算符(&)
const (
Readable = 1 << iota
Writable
Executable
)
/**
4.位与运算符(&)
运算规则:两个数都转为二进制,然后从高位开始比较,如果两个数都为1则为1,否则为0。
比如:129&128.
129转换成二进制就是10000001,128转换成二进制就是10000000。从高位开始比较得到,得到10000000,即128.
*/
func TestConstantTry1(t *testing.T) {
t.Log(Readable, Writable, Executable)
a := 1 // 0001
t.Log(a&Readable == Readable,a&Writable == Writable,a&Executable==Executable)
b := 7 // 0111
t.Log(b&Readable == Readable,b&Writable==Writable,b&Executable==Executable)
}
Result:
=== RUN TestConstantTry1
constant_try_test.go:18: 1 2 4
constant_try_test.go:20: true false false
constant_try_test.go:22: true true true
--- PASS: TestConstantTry1 (0.00s)
PASS
PS:学习笔记,侵删!
还没有评论,来说两句吧...