1.安裝
自己下載安裝go的安裝檔案, 安裝完了go, 把bin目錄添加到系統的變數中去, 配置GOPATH, 下載的go檔案的地址. 一般放在go的安裝檔案夾下的一個叫gopath的目錄中.
2.運行
運行go使用命令 , go run hello.go
3.變數
變數宣告:
var a int
var b float32=2.3
var c=43
宣告變數的簡短語法是 name := initialvalue,
4.型別
Go 支持的基本型別:
- bool
- 數字型別
- int8, int16, int32, int64, int
- uint8, uint16, uint32, uint64, uint
- float32, float64
- complex64, complex128
- byte
- rune
- string
有符號整型
int8:表示 8 位有符號整型
大小:8 位
范圍:-128~127
int16:表示 16 位有符號整型
大小:16 位
范圍:-32768~32767
int32:表示 32 位有符號整型
大小:32 位
范圍:-2147483648~2147483647
int64:表示 64 位有符號整型
大小:64 位
范圍:-9223372036854775808~9223372036854775807
int:根據不同的底層平臺(Underlying Platform),表示 32 或 64 位整型,除非對整型的大小有特定的需求,否則你通常應該使用 int 表示整型,
大小:在 32 位系統下是 32 位,而在 64 位系統下是 64 位,
byte 是 uint8 的別名,
rune 是 int32 的別名,
//強制型別轉換的格式.
var a int =1
b := float32(a)
5.常量
常量 的值需要在編譯的時候就確定
const a=2
const a int =3
6. 函式
單回傳值
func functionname(parametername type) returntype {
// 函式體(具體實作的功能)
}
多回傳值
func add(a,b int)(int,int){
return a+1,b+1
}
命名回傳值
從函式中可以回傳一個命名值,一旦命名了回傳值,可以認為這些值在函式第一行就被宣告為變數了,
上面的 rectProps 函式也可用這個方式寫成:
func rectProps(length, width float64)(area, perimeter float64) {
area = length * width
perimeter = (length + width) * 2
return // 不需要明確指定回傳值,默認回傳 area, perimeter 的值
}
請注意, 函式中的 return 陳述句沒有顯式回傳任何值,
由于 area 和 perimeter 在函式宣告中指定為回傳值, 因此當遇到 return 陳述句時, 它們將自動從函式回傳,
_ 在 Go 中被用作空白符,可以用作表示任何型別的任何值,表示不需要的結果.直接跳過.
如果方法名字第一個字母與是大寫的, 表示public 的, 如果是小寫的, 就是private 的.
7.包
所有包都可以包含一個 init 函式,init 函式不應該有任何回傳值型別和引數,在我們的代碼中也不能顯式地呼叫它,init 函式的形式如下:
func init() {
}
init 函式可用于執行初始化任務,也可用于在開始執行之前驗證程式的正確性,
包的初始化順序如下:
- 首先初始化包級別(Package Level)的變數
- 緊接著呼叫 init 函式,包可以有多個 init 函式(在一個檔案或分布于多個檔案中),它們按照編譯器決議它們的順序進行呼叫,
如果一個包匯入了另一個包,會先初始化被匯入的包,
盡管一個包可能會被匯入多次,但是它只會被初始化一次,
8.if
if condition {
}
if condition {
} else if condition {
} else {
}
它包含一個 statement 可選陳述句部分,該組件在條件判斷之前運行
if statement; condition {
}
else 陳述句應該在 if 陳述句的大括號 } 之后的同一行中,如果不是,編譯器會不通過,
9.回圈
for initialisation; condition; post {
}
for i:=1;i<10;i++{
}
break, contiune 和C中的語意相同
//另外一種回圈
i:=0
for ;1<10;{
i+=2
}
//無限回圈
for{
}
10.switch
與C中不同的是, switch默認不會在匹配后繼續匹配下面的, 而是直接跳出, 如果想繼續往下匹配, 需要加上關鍵字fallthrough
switch a{
case 1,2:
fmt.Println(1)
case 3:
fmt.Println(1)
default:
fmt.Println(0)
}
~~~~~~~~~~~~~~~~~~~~~~~
//無運算式的 switch
在 switch 陳述句中,運算式是可選的,可以被省略,如果省略運算式,則表示這個 switch 陳述句等同于 switch true,并且每個 case 運算式都被認定為有效,相應的代碼塊也會被執行,
num:=1
switch{
case 1,2:
fmt.Println(1)
case 3:
fmt.Println(1)
default:
fmt.Println(0)
}
//要求匹配之后繼續匹配, 加上關鍵字 fallthrough
switch a{
case 1,2:
fmt.Println(1)
fallthrough
case 3:
fmt.Println(1)
fallthrough
default:
fmt.Println(0)
fallthrough
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/265458.html
標籤:區塊鏈
上一篇:Docker的學習與使用總結
下一篇:MD5 加密演算法
