手把手帶你走進(jìn)Go語言之語法基礎(chǔ)解析
概述
Golang 是一個(gè)跨平臺(tái)的新生編程語言. 今天小白就帶大家一起攜手走進(jìn) Golang 的世界.
Go 語法基礎(chǔ)
Go 程序可以由多個(gè)標(biāo)記組成:
- 關(guān)鍵字
- 標(biāo)識(shí)符
- 常量
- 字符串
- 符號(hào)
關(guān)鍵字
Go 語言有 25 個(gè)關(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)識(shí)符
標(biāo)識(shí)符用來命名變量, 類型等程序?qū)嶓w. 一個(gè)標(biāo)識(shí)符實(shí)際上就是一個(gè)或者多個(gè)字母 (A-Z 和 a-z), 數(shù)字 (0-9), 下劃線 (_) 組成的序列. 但是第一個(gè)字符必須是字母或者下?lián)Q線而不是數(shù)字.
Go 不允許在表示符中使用標(biāo)點(diǎn)符號(hào), 例如: “@”, “$”, 和 “%”. 并且 Go 是一種區(qū)分大小寫的編程語言.
數(shù)據(jù)類型
類型 | 說明 |
---|---|
布爾類型 (Boolean) | true / false |
整數(shù)類型 (Integer) | 1, 2, 3, 4, … |
浮點(diǎn)類型 (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 // 定義浮點(diǎn)型變量 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)聲明過的, 否則會(huì)導(dǎo)致編譯錯(cuò)誤):
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)使用等號(hào) “=” 將一個(gè)變量賦值給另一個(gè)變量時(shí) (num2 = num1). 實(shí)際上在內(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang因Channel未關(guān)閉導(dǎo)致內(nèi)存泄漏的解決方案詳解
這篇文章主要為大家詳細(xì)介紹了當(dāng)Golang因Channel未關(guān)閉導(dǎo)致內(nèi)存泄漏時(shí)蓋如何解決,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-07-07用Go+WebSocket快速實(shí)現(xiàn)一個(gè)chat服務(wù)
這篇文章主要介紹了用Go+WebSocket快速實(shí)現(xiàn)一個(gè)chat服務(wù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04深入學(xué)習(xí)Golang并發(fā)編程必備利器之sync.Cond類型
Go?語言的?sync?包提供了一系列同步原語,其中?sync.Cond?就是其中之一。本文將深入探討?sync.Cond?的實(shí)現(xiàn)原理和使用方法,幫助大家更好地理解和應(yīng)用?sync.Cond,需要的可以參考一下2023-05-05GO項(xiàng)目實(shí)戰(zhàn)之Gorm格式化時(shí)間字段實(shí)現(xiàn)
GORM自帶的time.Time類型JSON默認(rèn)輸出RFC3339Nano格式的,下面這篇文章主要給大家介紹了關(guān)于GO項(xiàng)目實(shí)戰(zhàn)之Gorm格式化時(shí)間字段實(shí)現(xiàn)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01golang連接MongoDB數(shù)據(jù)庫(kù)及數(shù)據(jù)庫(kù)操作指南
MongoDB是Nosql中常用的一種數(shù)據(jù)庫(kù),下面這篇文章主要給大家介紹了關(guān)于golang連接MongoDB數(shù)據(jù)庫(kù)及數(shù)據(jù)庫(kù)操作的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09