Go語言的程式結構

2021-08-06 05:00:56 字數 2945 閱讀 4284

go 語言的命名規則和c語言的命令沒什麼不同,都是由數字,下劃線,字母組成,且必須以下劃線或者字母開頭。大小寫敏感(var a int 和 var a int是不同變數)

go語言的關鍵字主要包括25個:

break

default

func

inte***ce

select

case

defer

gomap

struct

chan

else

goto

package

switch

const

fallthrough

ifrange

type

continue

forimport

return

var

如果乙個變數是在函式內部定義的,那麼只能函式內部訪問,這個c語言的區域性變數是乙個概念,go語言的包一般採用小寫,對於封裝問題,如果你想將某個函式暴露給外面,那麼函式名字首字母需要大寫,如果不想那麼函式名字是小寫。就像fmt包裡面的println()函式。

go 語言的一般採用駝峰式賦值,也就是一般採用大小寫間隔而不用_來隔開單詞。

eg: parsememoryallocate.

go 語言的變數的定義是跟其它語言很不同的,go語言的變數定義格式如下:

var 變數名字 資料型別 = 表示式
其中 資料型別,=表示式 可以去掉其中之一,當去掉資料型別的時候,變數會根據後面的表示式的值來推導變數型別,去掉=表示式的時候,會採用系統的預設的值。

var a,b,c = 3.14,3,true (a是float,b是int,c是bool)

var a,b,c int (a,b,c預設值都是0)

簡短變數的定義是乙個很方便的功能,它的結構如下

名字 :=  表示式
簡短變數定義方便簡潔,被廣泛的應用在了大部分的區域性變數的宣告和初始化中。var 的定義方法一般是用於需要顯式的定義資料型別或者初始值不重要的地方。

簡短變數定義也支援組定義:

x, y := 10,20
簡短變數的宣告中必須有乙個新的變數:

x,y := 10,20

x,y := 10,30

這種賦值方式是錯誤的,必須有新的變數的引入:

x,y := 10,20

z,y := 10,30

這樣的話就是想當於第二次宣告了乙個新的變數z,並且對已經宣告的y進行了賦值。

go語言的指標和c語言的操作基本是沒什麼不同的,但go語言的乙個指標有乙個很大的變動就是函式可以返回區域性變數的位址

go語言的區域性變數返回: 

func f() *int

var p = f()

c語言的區域性變數的返回:

int* func()

int *sss = func();

對於c語言的寫法編譯的時候就會有warning,然後列印sss和p的值,會發現go語言是一直保留區域性變數的位址的值得,但c語言中,記憶體裡的值就是不可**的。

還有乙個建立變數的方法是呼叫內建的new 函式,返回的是t型別的指標。定義模型為:

x := new(t)
eg:

p := new(int)

fmt.println(*p)

*p = 2

fmt.println(*p)

上述的例子建立了p指標,並且返回了p的值0,然後對*p的值進行賦值,最後輸出2.

對於go語言的變數的生命週期,全域性變數和程式的生命週期是一樣的,但區域性變數的週期是動態的:從每次建立變數,直到變數不再被引用為止,變數的儲存空間才會被**。這個就是前面的指標講的**,直到沒有引用才會去**記憶體。

case1:

var globle *int

func test1()

case2:

func test2()

func main()

對於上述的例子x 記憶體因為被globle引用所以生存週期是伴隨整個**的,但y的記憶體是在test2結束之後就會自動釋放。

賦值操作基本和c語言沒啥區別,有個元組賦值比較新穎,比如你要交換兩個數值的值,用c語言的寫法

int x = 10; 

int y = 20;

int m = 0;

m = x;

x = y;

y = m;

對於go:

x,y = y,x
這個特性和函式的多返回值還是很有關係的。

func f() (*int, *int) 

p, q := f()

包是go語言裡面很重要的乙個概念,它和其它語言的庫概念累死,主要為實現模組化,封裝,單獨編譯,**重用。通常包的名字和包的路徑的最後一層目錄名字是一樣的

eg:

目錄名 /src/test/hello/

包名 hello

當你想把變數暴露給包外面的時候,只需要將首字母大寫即可,反之則小寫

需要注意的是當你import 引入乙個包的時候,這個包是必須被使用的,如果不被使用,在編譯期間就會報錯

當然你可以使用內建goimports工具,該工具可以自動去除掉未用到的包和新增用到的包。嘗試過多種官方的安裝方式,但貌似都有問題,下面這個**可以安裝。

Go語言程式結構結構

4 賦值 5 型別 go語言的基礎組成包括 例如 package main import fmt func main go語言中的函式名 變數名 常量名 型別名 語句標號和包名等所有的命名,都遵循乙個簡單的命名規則 名字必須以乙個字母或下劃線開頭,後面可以跟任意數量的字母 數字或下劃線 區分大小寫 ...

Golang 基礎 Go 語言的程式結構

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

Go 語法 程式結構

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