示例程式碼請訪問: https://github.com/wenjianzhang
編寫測試程式
- 原始碼檔案以_test結尾;例如:xxx_test.go
- 測試方法名以Test開頭;例如:func TestXXXXX(t *testing.T){}
實現斐波那且數列
package fib
import (
"fmt"
"testing"
)
func TestFibList(t *testing.T) {
// 第一種賦值方式
//var a int =1
//var b int =1
// 第二種賦值方式
//var (
// a int = 1
// b = 1
//)
// 第三種賦值方式
a := 1
b := 1
fmt.Print(a)
for i := 0; i < 5; i++ {
fmt.Print(" ", b)
tmp := a
a = b
b = tmp + a
}
fmt.Println()
}
程式碼裡邊給出了三種賦值方式:
one
var a int =1 一般全域性變數,或者外部變數
two
var ( a int = 1 b = 1 )
three go語言可以不使用關鍵字,使用型別推斷直接給變數設定型別
a := 1
變數賦值
- 賦值可以進行自動型別推斷
- 在一個賦值語句中可以對多個變數進行同時賦值
func TestExchang(t *testing.T) {
a := 1
b := 1
// 1 常見寫法
//tmp := a
//a = b
//b = tmp
//
// 2 go 特性:多個變數進行同時賦值
a, b = b, a
t.Log(a, b)
}
兩點需要注意
- 常見寫法
tmp := a a = b b = tmp
- go 特性:多個變數進行同時賦值
a, b = b, a
常量定義
快速設定連續值
const (
Monday = iota + 1
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
)
const (
Open = 1 << iota
Close
Pending
)
測試程式碼
package constart_test
import (
"testing"
)
const (
Monday = iota + 1
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
)
const (
Open = 1 << iota //0001
Close //0010
Pending //0011
)
func TestConstantTry(t *testing.T) {
t.Log(Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)
}
func TestConstantTry1(t *testing.T) {
a := 6
t.Log(uint8(a), uint(Open), uint(Close), uint(Pending))
c := a & Open
t.Logf("第一行 - c 的值為 %d\n", c)
c = a & Close
t.Logf("第一行 - c 的值為 %d\n", c)
c = a & Pending
t.Logf("第一行 - c 的值為 %d\n", c)
t.Log(a&Open == Open, a&Close == Close, a&Pending == Pending)
}
輸出
--- PASS: TestConstantTry (0.00s)
constant_try_test.go:24: 1 2 3 4 5 6 7
=== RUN TestConstantTry1
--- PASS: TestConstantTry1 (0.00s)
constant_try_test.go:30: 6 1 2 4
constant_try_test.go:32: 第一行 - c 的值為 0
constant_try_test.go:34: 第一行 - c 的值為 2
constant_try_test.go:36: 第一行 - c 的值為 4
constant_try_test.go:37: false true true
PASS
Process finished with exit code 0
示例程式碼請訪問: https://github.com/wenjianzhang
本作品採用《CC 協議》,轉載必須註明作者和本文連結