Go: 分布式学习利器(2)-- Go中的变量,常量 以及与其他语言变量之间的差异
生活随笔
收集整理的這篇文章主要介紹了
Go: 分布式学习利器(2)-- Go中的变量,常量 以及与其他语言变量之间的差异
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. Go 語言編寫測試代碼
- 2. Go 的變量
- 3. Go 常量定義
1. Go 語言編寫測試代碼
- 源碼文件以
_test結尾:xxx_test.go - 測試方法名需以Test開頭:
func TESTXXX(t *testing.T) {..},且參數列表直接用go 默認的test參數即可
如下first_test.go 代碼:
package try_testimport "testing"func TestFirstTry(t *testing.T) { // 套go test的模版t.Log("My first test try") // 在test中打印數據
}
go test first_test.go 普通方式運行
go test -v first_test.go 打印Log函數的輸出
2. Go 的變量
Go語言中的變量與其他編程語言的差異主要如下:
- 賦值可以進行自動類型判斷
- 一個賦值語句中可以對多個變量進行同時賦值
查看如下 計算斐波那契數列 的 go 代碼
package fib_testimport ("testing"
)func TestFib(t *testing.T) {/*** 普通的變量初始化方式如下** var a int = 1 ** var b int = 1*/// 也可以集中到一塊進行初始化var (a int = 1b int = 1)/*** 利用Go語言的自動類型推斷** a := 1** b := 1*/t.Log(a)for i :=0; i< 5; i++{t.Log(" ", b)tmp := aa = bb = tmp + a}t.Log(b)
}func TestExchange(t *testing.T) {a := 1b := 2// 交換 a,b的值t.Log(a, " ",b)tmp := aa = bb = tmpt.Log(a, " ",b)/*** go 語言支持對多個變量同時賦值** 如下代碼和兩個變量交換的結果完全一致*///a,b = b,a//t.Log(a, " ",b)
}
其中變量的賦值可以有很多種形式,尤其是a := 1是go 相比于其他編譯型語言特有的變量類型推斷。
同時a, b = b, a這樣的多個變量同時賦值也是比較獨特。
運行如上測試代碼如下:
? go test -v fib_test.go
=== RUN TestFibfib_test.go:21: 1 1fib_test.go:24: 1fib_test.go:26: 1fib_test.go:26: 2fib_test.go:26: 3fib_test.go:26: 5fib_test.go:26: 8fib_test.go:31: 13
--- PASS: TestFib (0.00s)
=== RUN TestExchangefib_test.go:39: 1 2fib_test.go:43: 2 1
--- PASS: TestExchange (0.00s)
PASS
ok command-line-arguments 0.779s
3. Go 常量定義
與其他編程語言的主要差異 是:快速設置連續的值
/*
** 設置遞增+1
** 比如Monday是1
** 則其他 Tue = 2, Wed =3 ...
*/
const ( // 關鍵字,聲明常量類型Monday = iota + 1TueWedThursFriSatSun
)/*
** 對bit 位二進制 常量進行連續初始化
**
** Open 表示類似 001
** Close 則依次 010
** Running 表示 100
*/
const (Open = 1 << iotaClose Running
)
編寫簡單測試代碼進行驗證:
package fib_testimport ("testing"
)func TestConst(t *testing.T) {const (Mon = iota + 1TueWed)t.Log(Mon," ", Tue, " ", Wed)const (First = 1 << iotaSecondThird)t.Log(First," ", Second, " ",Third)
}
輸出如下:
=== RUN TestConstfib_test.go:59: 1 2 3fib_test.go:66: 1 2 4
--- PASS: TestConst (0.00s)
PASS
當然,以上常量賦值主要是針對數值是連續的,如果不連續,則還是按照傳統的方式一個一個進行賦值。
const (a = 1b = 12
)
總結
以上是生活随笔為你收集整理的Go: 分布式学习利器(2)-- Go中的变量,常量 以及与其他语言变量之间的差异的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Go:分布式学习利器(1) -- 开发环
- 下一篇: Go: 分布式学习利器(3) -- Go