手把手帶你走進(jìn)Go語言之語法基礎(chǔ)解析
概述
Golang 是一個跨平臺的新生編程語言. 今天小白就帶大家一起攜手走進(jìn) Golang 的世界. 
Go 語法基礎(chǔ)
Go 程序可以由多個標(biāo)記組成:
- 關(guān)鍵字
- 標(biāo)識符
- 常量
- 字符串
- 符號

關(guān)鍵字
Go 語言有 25 個關(guān)鍵字:
| 關(guān)鍵字 | 作用 |
|---|---|
| var & const | 變量和常量的聲明 |
| package & import | 導(dǎo)入 |
| func | 用于定義函數(shù)和方法 |
| return | 用于函數(shù)返回 |
| defer someCode | 在函數(shù)退出前執(zhí)行 |
| go | 用于并行 |
| select | 用于選擇不同類型的通訊 |
| interface | 用于定義接口 |
| struct | 用于定義抽象數(shù)據(jù)類型 |
| break, case, continue, for, falthrough, else, if. switch, goto, defult | 流程控制 |
| chan | 用于 channel 通訊 |
| type | 用于聲明自定義類型 |
| map | 用于聲明 map 類型數(shù)據(jù) |
| range | 用于讀取 slice, map, channel 數(shù)據(jù) |
標(biāo)識符
標(biāo)識符用來命名變量, 類型等程序?qū)嶓w. 一個標(biāo)識符實際上就是一個或者多個字母 (A-Z 和 a-z), 數(shù)字 (0-9), 下劃線 (_) 組成的序列. 但是第一個字符必須是字母或者下?lián)Q線而不是數(shù)字.

Go 不允許在表示符中使用標(biāo)點符號, 例如: “@”, “$”, 和 “%”. 并且 Go 是一種區(qū)分大小寫的編程語言.
數(shù)據(jù)類型
| 類型 | 說明 |
|---|---|
| 布爾類型 (Boolean) | true / false |
| 整數(shù)類型 (Integer) | 1, 2, 3, 4, … |
| 浮點類型 (Float) | 1.1, 2.2, 3.3, 4.4, … |
| 字符串類型 (String) | 字符串類型表示字符串值的合集. 字符串是不可變類型, 一旦創(chuàng)建后, 就不可能改變字符串的內(nèi)容. |
| 派生類型 | 包括指針可型, 數(shù)組類型, 結(jié)構(gòu)類型, 聯(lián)合類型, 函數(shù)類型, 切片類型, 接口類型 |
例子:
package main
import "fmt"
func main() {
// 定義字符串變量
var str = "我是小白呀"
// 定義整數(shù)型變量
var integer = 8
// 定義浮點型變量
var float = 1.2
// 定義布爾類型變量
var bool = true
fmt.Println("string: ", str, "\ninteger: ", integer, "\nfloat: ", float, "\nboolean: ", bool)
}
輸出結(jié)果:
string: 我是小白呀
integer: 8
float: 1.2
boolean: true
變量聲明
格式 1, 指定變量類型, 聲明后再進(jìn)行賦值:
var 變量名 變量類型 變量名 = 值
格式 2, 根據(jù)值自行判定變量類型:
var 變量名 = 值
格式 3, 省略 var. (注意: “:=” 左側(cè)的變量不應(yīng)該是已經(jīng)聲明過的, 否則會導(dǎo)致編譯錯誤):
v_name := value

例子:
package main
import "fmt"
func main() {
// 方法一
var num1 int // 聲明變量
num1 = 1 // 賦值
fmt.Println(num1) // 調(diào)試輸出
// 方法二
var num2 = 2 // 自行判定變量類型
fmt.Println(num2) // 調(diào)試輸出
// 方法三
num3 := 3 // 省略var
fmt.Println(num3) // 調(diào)試輸出
}
輸出結(jié)果:
1
2
3
多變量聲明
格式:
var 變量名稱1, 變量名稱2, 變量名稱3 = 值1, 值2, 值2
例子:
package main
import "fmt"
func main() {
// 多變量聲明
var num4, num5, num6 = 1, 2, 3
fmt.Println(num4, num5, num6) // 調(diào)試輸出
}
輸出結(jié)果:
1 2 3
值類型和引用類型
所有像 int, float, bool 和 string 這些基本類型都屬于值類型. 使用這些類型的變量直接指向存在內(nèi)存中的值.

當(dāng)使用等號 “=” 將一個變量賦值給另一個變量時 (num2 = num1). 實際上在內(nèi)存中將 num1 的值進(jìn)行了拷貝.
例子:
package main
import "fmt"
func main() {
// 定義變量
var num1 = 2
var num2 = num1
// 調(diào)試輸出值和地址
fmt.Println(num1, &num1)
fmt.Println(num2, &num2)
}
輸出結(jié)果:
2 0xc0000ac058
2 0xc0000ac070
到此這篇關(guān)于手把手帶你走進(jìn)Go語言之語法基礎(chǔ)解析的文章就介紹到這了,更多相關(guān)Golang 語法基礎(chǔ)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang因Channel未關(guān)閉導(dǎo)致內(nèi)存泄漏的解決方案詳解
這篇文章主要為大家詳細(xì)介紹了當(dāng)Golang因Channel未關(guān)閉導(dǎo)致內(nèi)存泄漏時蓋如何解決,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-07-07
用Go+WebSocket快速實現(xiàn)一個chat服務(wù)
這篇文章主要介紹了用Go+WebSocket快速實現(xiàn)一個chat服務(wù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04
深入學(xué)習(xí)Golang并發(fā)編程必備利器之sync.Cond類型
Go?語言的?sync?包提供了一系列同步原語,其中?sync.Cond?就是其中之一。本文將深入探討?sync.Cond?的實現(xiàn)原理和使用方法,幫助大家更好地理解和應(yīng)用?sync.Cond,需要的可以參考一下2023-05-05
GO項目實戰(zhàn)之Gorm格式化時間字段實現(xiàn)
GORM自帶的time.Time類型JSON默認(rèn)輸出RFC3339Nano格式的,下面這篇文章主要給大家介紹了關(guān)于GO項目實戰(zhàn)之Gorm格式化時間字段實現(xiàn)的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01
golang連接MongoDB數(shù)據(jù)庫及數(shù)據(jù)庫操作指南
MongoDB是Nosql中常用的一種數(shù)據(jù)庫,下面這篇文章主要給大家介紹了關(guān)于golang連接MongoDB數(shù)據(jù)庫及數(shù)據(jù)庫操作的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09

