前面已經給大家整理過Golang的安裝和環境搭建,那么基本語法今天就和大家聊聊,
其實定義一個Go語言的基本結構非常簡單,也就幾步而已:
Golang基本語法
Go 語言的基礎組成有以下幾個部分:
- 包宣告
- 引入包
- 函式
- 變數
- 陳述句 & 運算式
- 注釋
示例:
package main
import "fmt"
func main() {
/* 這是一個Go語言 */
fmt.Println("Hello, Go!")
}
決議:
-
第一行代碼 package main 定義了包名,你必須在源檔案中非注釋的第一行指明這個檔案屬于哪個包,如:package main,
package main表示一個可獨立執行的程式,每個 Go 應用程式都包含一個名為 main 的包, -
第二行 import “fmt” 告訴 Go 編譯器這個程式需要使用 fmt 包(的函式,或其他元素),fmt 包實作了格式化 IO(輸入/輸出)的函式,
-
第三行 func main() 是程式開始執行的函式,main 函式是每一個可執行程式所必須包含的,一般來說都是在啟動后第一個執行的函式(如果有 init() 函式則會先執行該函式),
-
下一行 /…/ 是注釋,在程式執行時將被忽略,單行注釋是最常見的注釋形式,你可以在任何地方使用以 // 開頭的單行注釋,多行注釋也叫塊注釋,均已以 /* 開頭,并以 */ 結尾,且不可以嵌套使用,多行注釋一般用于包的檔案描述或注釋成塊的代碼片段,
-
最后一行 fmt.Println(…) 可以將字串輸出到控制臺,并在最后自動增加換行字符 \n,
使用 fmt.Print(“hello, world\n”) 可以得到相同的結果,
Print 和 Println 這兩個函式也支持使用變數,如:fmt.Println(arr),如果沒有特別指定,它們會以默認的列印格式將變數 arr 輸出到控制臺, -
當識別符號(包括常量、變數、型別、函式名、結構欄位等等)以一個大寫字母開頭,如:Group1,那么使用這種形式的識別符號的物件就可以被外部包的代碼所使用(客戶端程式需要先匯入這個包),這被稱為匯出(像面向物件語言中的 public),
-
識別符號如果以小寫字母開頭,則對包外是不可見的,但是他們在整個包的內部是可見并且可用的(像面向物件語言中的 protected ),
特別注意:
1、寫C++ 的人都會將 “{” 獨立一行,但是這在go 里面是錯誤的 ,“{” 必須和方法體在同一行,很多人都容易寫go 的時候習慣性的就犯這個錯誤,最后還不知道錯誤在哪,
2、if…else 陳述句中的 else 必須和 if 的 ’ } ’ 在同一行,否則編譯錯誤,
3、包名的定義,你必須在源檔案中非注釋的第一行宣告包名,如:package main,
package main表示一個可獨立執行的程式,每個 Go 應用程式都包含一個名為 main 的包,
4、在 Go 程式中,一行代表一個陳述句結束,每個陳述句不需要像 C 家族中的其它語言一樣以分號 ; 結尾,因為這些作業都將由 Go 編譯器自動完成,
如果你打算將多個陳述句寫在同一行,則必須使用 ; 人為的去區分,但在實際開發中我們并不鼓勵這種做法,
5、main()函式是每一個可執行程式所必須包含的,一般來說都是在啟動后第一個執行的函式,
然而,每個package 中,只能有一個main() 函式,否則會報main redeclared in this block previous declaration at … 的錯誤,
6、當函式、結構等識別符號以一個大寫字母開頭,如:GetInfo,那么使用這種形式的識別符號的物件就可以被外部包的代碼所使用,這被稱為匯出(像面向物件語言中的 public);
識別符號如果以小寫字母開頭,則對包外是不可見的,但是他們在整個包的內部是可見并且可用的(像面向物件語言中的 protected ),
7、識別符號用來命名變數、型別等程式物體,一個識別符號實際上就是一個或是多個字母(AZ和az)數字(0~9)、下劃線_組成的序列,但是第一個字符必須是字母或下劃線而不能是數字,
以下是無效的識別符號:
- 1ab(以數字開頭)
- case(Go 語言的關鍵字)
- a+b(運算子是不允許的)
8、錯誤 no new variables on left side of := ,意思是,“左邊一個新的變數也沒有!”
解決辦法就是:對于x,y := …這種形式,只要把其中的一個變數命名成新的就可以了,
9、不能使用++自增或- -自減運算子初始化變數和對變數賦值,
執行 Go 語言命令
- 打開編輯器如Sublime Text3,將以上示例中的代碼添加到編輯器中,
- 將以上代碼保存為 hello.go
- 打開命令列,并進入程式檔案保存的目錄中,
- 輸入命令 go run hello.go 并按ctrl+B執行代碼,
- 這時在底部的控制臺就會看到 “Hello Go!” 字樣的輸出.
- 還可以使用 go build 命令來生成二進制檔案:
go build hello.go
ls
hello hello.go
./hello
Hello, Go!
資料型別
資料型別的出現是為了把資料分成所需記憶體大小不同的資料,編程的時候需要用大資料的時候才需要申請大記憶體,就可以充分利用記憶體,
go中的資料型別包括基本資料型別和高級資料型別(派生型別):
基本資料型別又分為三大類:
- 布爾型
- 數字型別
- 字串型別
布爾型:
布爾型的值只可以是常量 true 或者 false,一個簡單的例子:var b bool = true,
字串型別
字串就是一串固定長度的字符連接起來的字符序列,Go 的字串是由單個位元組連接起來的,Go 語言的字串的位元組使用 UTF-8 編碼標識 Unicode 文本,
數字型別
整型 int 和浮點型 float32、float64,Go 語言支持整型和浮點型數字,并且支持復數,其中位的運算采用補碼,
分為:
- 整數型別(byte,rune,int/uint,int8/uint8,int16/uint16,int32/uint32,int64/uint64)
- 浮點型別(float32,float64)
- 復數型別(complex64,complex128)
- 其他數字型別
整數型別

浮點型

其他數字型別

高級資料型別(派生型別)
- 陣列(array)
- 切片(slice)
- 字典(map)
- 通道(channel)
- 函式(function)
- 結構體(function)
- 介面(interface)
- 指標型別 (*Xxx,Pointer,uintptr)
- 結構化型別(struct)
- 介面型別(interface)
如果按照底層結構劃分,值型別包括(所有基本資料型別,陣列,結構體),參考型別包括(slice,map,channel,function,interface,指標)
總結:
如下圖所示:

變數&常量
變數定義
-
變數名由字母、數字、下劃線組成,其中首個字母不能為數字,例:var name string
-
宣告:
1、指定變數型別,宣告后若不賦值,使用默認值
var name string
name = “李四”2、根據值自行判定變數型別
var name = “李四”3、簡短形式,省略var
age := 10
注意:
- (:=)是使用變數的首選形式
- (:=)只能被用在函式體內,而不可以用于全域變數的宣告與賦值
- (:=)左側的變數不應該是已經宣告過的,否則會導致編譯錯誤
常量定義
-
常量的資料型別只可以是布爾型、數字型(整數型、浮點型和復數)和字串型
-
常量宣告:
const b string = “abc”
iota:特殊常量
const (
a = iota
b
c
)
決議:
- 代表連續的,無型別的整數常量
- 以const開始的常量宣告陳述句為單位
- 從0開始,每賦給一個常量就遞增一次
- 一旦跨越以const開始的常量宣告陳述句就歸0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/11504.html
標籤:AI
下一篇:區塊鏈|CAP原理
