GO基礎知識分享
阿新 • • 發佈:2021-04-01
[TOC]
# GO基礎知識分享
兵長:喲,最近在幹啥呢
胖sir:在看我之前的go基礎學習資料呢,回顧一下
兵長:那給我分享一下唄,我也想回顧回顧
胖sir:用你的小手指點開你的手機,我來傳給你
兵長:你信不信我的小手指可以帶你飛整個峽谷 . . .
## go語言的基本事項
1. go run hello.go 直接執行,輸出結果(原理也是編譯後執行)
2. go build hello.go 生成可執行程式,執行可執行程式,輸出結果
3. 注意 go語言中花括號不能單獨佔一行,否則會報錯
```go
package main
import "fmt"
func main(){ //go語言中此處的花括號不能單獨佔一行,否則會報錯
fmt.Println("hello world")
}
```
1. go語言一條語句佔一行,如果一行需要執行多個語句 使用 **分號** 隔開
2. go語言的輸出語句有3種方式
3. 1. import "fmt" 後適用fmt.Println(x) -- 輸出
2. println(x) -- 輸出
3. fmt.Printf("%d",x) -- 格式化輸出
## 關鍵字
下面列舉了 Go 程式碼中會使用到的 25 個關鍵字或保留字:
| break | default | func | interface | select |
| -------- | ----------- | ------ | --------- | ------ |
| case | defer | go | map | struct |
| chan | else | goto | package | switch |
| const | fallthrough | if | range | type |
| continue | for | import | return | var |
除了以上介紹的這些關鍵字,Go 語言還有 36 個預定義識別符號:
| append | bool | byte | cap | close | complex | complex64 | complex128 | uint16 |
| ------ | ------- | ------- | ------- | ------ | ------- | --------- | ---------- | ------- |
| copy | false | float32 | float64 | imag | int | int8 | int16 | uint32 |
| int32 | int64 | iota | len | make | new | nil | panic | uint64 |
| print | println | real | recover | string | true | uint | uint8 | uintptr |
## 字串的拼接和變數的定義方式
定義變數的三種方式
1. 正常使用var定義變數
2. 使用var定義變數,但是不定義型別,通過賦初值的方式,go編譯器自動識別
3. 使用:=的方式來進行 新變數的定義,僅限於新變數 -- 適用於定義在函式內部
```go
//字串 可以使用+ 進行拼接
fmt.Println("this is my func")
fmt.Println("hello ,wolrd" + "xiaozhuzhu")
//定義變數
var name string="xiaomotong"
var age,tail int=24,170
fmt.Println(name, age , tail)
fmt.Println(name)
fmt.Println(age)
fmt.Println(tail)
//定義變數的三種方式
//1
var a int = 1
fmt.Println(a)
//2 使用var定義變數,但是不定義型別,通過賦初值的方式,go編譯器自動識別
var b = "hello"
fmt.Println(b)
//3 使用:=的方式來進行 新變數的定義,僅限於新變數
//:= 左側如果沒有宣告新的變數,就產生編譯錯誤
c := 20
fmt.Println(c)
//c:=30 //報錯,因為c已經不是新變數的
c=30 //正確,是一個正常的賦值操作
fmt.Println(c)
c,d:=40,90 //這樣是合法的
fmt.Println(c,d)
```
因式分解的方式,僅僅適用於定義全域性變數
```go
//因式分解的方式,僅僅適用於定義全域性變數
var
(
g_a int = 1
g_b,g_c int=1,2
)
```
## 空白符
空白識別符號 _ 也被用於拋棄值,如值 5 在:_, b = 5, 7 中被拋棄。
_ 實際上是一個只寫變數,你不能得到它的值。這樣做是因為 Go 語言中你必須使用所有被宣告的變數,但有時你並不需要使用從一個函式得到的所有返回值。
```go
//空白符
_,e := 2,3
fmt.Println(e)
```
## const常量
- 定義const常量
```go
//定義const常量
const width,height = 10,5
var area int=width*height
fmt.Println("面積為", area) //50
```
- const常量用作列舉
```go
const(
unknow = 0
man = 1
woman = 2
)
println(unknow,man,woman) //0 1 2
```
- 常量可以用len(), cap(), unsafe.Sizeof()函式計算表示式的值。常量表達式中,函式必須是內建函式,否則編譯不過:
```go
const(
a = "hello"
b = len(a)
c = unsafe.Sizeof(a)
)
println(a,b,c) //hello 5 16
```
## iota的用法
iota,特殊常量,可以認為是一個可以被編譯器修改的常量。
iota 在 const關鍵字出現時將被重置為 0(const 內部的第一行之前),const 中每新增一行常量宣告將使 iota 計數一次(iota 可理解為 const 語句塊中的行索引)。
iota 可以被用作列舉值:
```go
//itoa的用法
const(
g_a = iota
g_b
g_c
g_d
)
const(
g_e = iota
g_f = "hello"
g_g
g_h = iota
g_i
)
const(
g_j