Go語言程式結構結構

2021-10-06 20:26:46 字數 2867 閱讀 3312

4 賦值

5 型別

go語言的基礎組成包括:

例如:

package main

import "fmt"

func main()

go語言中的函式名、變數名、常量名、型別名、語句標號和包名等所有的命名,都遵循乙個簡單的命名規則:

名字必須以乙個字母或下劃線開頭,後面可以跟任意數量的字母、數字或下劃線(區分大小寫)。25個關鍵字不能用於自定義名字。

go語言程式設計師推薦使用駝峰式命名

宣告語句定義了程式的各種實體物件以及部分或全部的屬性。

go語言主要有四種型別的宣告語句:

一般語法:

var 變數名 型別 = 表示式
可以省略「型別」或「= 表示式」

例子:

var myname string

var mywife = "齋藤飛鳥"

或者宣告一組變數,如:

var a, b, c int 		// int, int, int

var mywife, age, really = "飛鳥", 21, true // string, int, bool

用於宣告和初始化區域性變數。例如:

i, j := 0, 1
交換值

i, j = j, i // 交換 i 和 j 的值
乙個變數對應乙個儲存了變數對應型別值的記憶體空間。

每乙個變數必然有對應的記憶體位址。

乙個指標的值是另乙個變數的位址。

乙個指標對應變數在記憶體中的儲存位置。

例如:

「var x int」宣告語句宣告乙個x變數

&x表示式產生乙個指向該整數變數的指標,指標對應的資料型別是*int

「p = &x」,p指標儲存了x變數的記憶體位址,*p表示式對應p指標指向的變數的值。

例子

x := 1

p := &x // p, of type *int, points to x

fmt.println(*p) // "1"

*p = 2 // equivalent to x = 2

fmt.println(x) // "2"

任何型別的指標的零值都是nil。

針之間也是可以進行相等測試的,只有當它們指向同乙個變數或全部是nil時才相等。

var x, y int

fmt.println(&x == &x, &x == &y, &x == nil) // "true false false"

var p = f()

func f() *int

func incr(p *int) int 

v := 1

incr(&v) // side effect: v is now 2

fmt.println(incr(&v)) // "3" (and v is 3)

另乙個建立變數的方法是呼叫用內建的new函式。表示式new(t)將建立乙個t型別的匿名變數,初始化為t型別的零值,然後返回變數位址,返回的指標型別為*t。

p := new(int)   // p, *int 型別, 指向匿名的 int 變數

fmt.println(*p) // "0"

*p = 2 // 設定 int 匿名變數的值為 2

fmt.println(*p) // "2"

new函式使用通常相對比較少

變數的生命週期指的是在程式執行期間變數有效存在的時間間隔。

包一級宣告的變數,命週期和整個程式的執行週期是一致的。

區域性變數的宣告週期則是動態的:每次從建立乙個新變數的宣告語句開始,直到該變數不再被引用為止,然後變數的儲存空間可能被**。函式的引數變數和返回值變數都是區域性變數。它們在函式每次被呼叫的時候建立。

使用賦值語句可以更新乙個變數的值

x = 1                       // 命名變數的賦值

*p = true // 通過指標間接賦值

person.name = "bob" // 結構體欄位賦值

count[x] = count[x] * scale // 陣列、slice或map的元素賦值

數值變數也可以支援++遞增和--遞減語句(譯註:自增和自減是語句,而不是表示式,因此x = i++之類的表示式是錯誤的)

v := 1

v++ // 等價方式 v = v + 1;v 變成 2

v-- // 等價方式 v = v - 1;v 變成 1

元組賦值允許同時更新多個變數的值。

x, y = y, x

a[i], a[j] = a[j], a[i]

i, j, k = 2, 3, 5

乙個型別宣告語句建立了乙個新的型別名稱,和現有型別具有相同的底層結構。

新命名的型別提供了乙個方法,用來分隔不同概念的型別,這樣即使它們底層型別相同也是不相容的。

type 型別名字 底層型別
型別宣告語句一般出現在包一級,因此如果新建立的型別名字的首字元大寫,則在外部包也可以使用。

Go語言的程式結構

go 語言的命名規則和c語言的命令沒什麼不同,都是由數字,下劃線,字母組成,且必須以下劃線或者字母開頭。大小寫敏感 var a int 和 var a int是不同變數 go語言的關鍵字主要包括25個 break default func inte ce select case defer goma...

Go 語法 程式結構

背景 go 語言和其他的語言一樣,龐大的程式都是由小的基本元件構建而來 名稱go 語言有25 個關鍵字,不可用作名稱 go 語言還有 三十幾個內建的與宣告的常量 型別和函式 notice 宣告宣告給乙個程式實體命名,並設定其部分或全部屬性。有 4 個主要的宣告 example 以乙個例項分別介紹 4...

Golang 基礎 Go 語言的程式結構

一般,乙個 go 專案在 gopath 下,會有如下三個目錄 bin 存放編譯後的可執行檔案 pkg 存放編譯後的包檔案 src 存放專案原始檔一般情況下,bin 和 pkg 目錄可以不建立,go 命令會自動構建 如 go install 只需要建立 src 目錄即可。當前程式的包名 package...