日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Go: 分布式学习利器(2)-- Go中的变量,常量 以及与其他语言变量之间的差异

發布時間:2023/11/27 生活经验 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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中的变量,常量 以及与其他语言变量之间的差异的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。