go語言基礎學習筆記總結1

2021-10-06 09:52:51 字數 4197 閱讀 4252

go語言的目錄結構

go語言執行的分析流程

go語言的開發注意事項

go的變數

常量輸入輸出格式

型別轉換

迴圈和分支

函式區域性變數和全域性變數

在環境變數中設定goparh,專案就到goparh指定的目錄中執行

為了更好的管理專案中的檔案,要求將檔案都要放在相應的資料夾中。go語言規定如下的資料夾如下:。

src目錄:用於以**包的形式組織並儲存go原始碼檔案。(比如: gophs等)。

pkg 目錄:用於存放經由go install命令構建安裝後的**包(包含go庫原始碼檔案)的「a"歸檔檔案。

bin目錄:與pkg目錄類似,在通過go install命令完成安裝後,儲存由go命令原始碼檔案生成的可執行檔案。

在go語言中包的定義和使用: 定義包名要和目錄名相同,在scr下的包名可以為main

在匯入包名和呼叫自定義其它包的時候,盡量使用相對路徑,不然他會按照你設定的goparh進行搜尋了

如:在scr的main檔案中呼叫scr/user1/uz.go中的函式時

import "./user1"
1、如果先編譯go buile再執行

2、直接執行(他把編譯的這個環節給隱藏了)

直接go檔案通過go run來進行執行

兩種執行的區別:

1)如果我們先編譯生成了可執行檔案,那麼我們可以將該可執行檔案拷貝到沒有go開發環

境的機器上,仍然可以執行

2)如果我們是直接go run go源**,那麼如果要在另外- -個機器上這麼執行,也需要go

開發環境,否則無法執行。

3)在編譯時,編譯器會將程式執行依賴的庫檔案包含在可執行檔案中,所以,可執行檔案

變大了很多。

go原始檔以"go"為副檔名。

go應用 程式的執行入口是main()方法。

go語言嚴格區分大小寫。

go方法由-條條語句構成,每個語句後不需要分號(go語言會在每行後自動加分號),這也體現出golang的簡潔性。

go編譯器是一 行行進行編譯的,因此我們一行就寫一條語句,不能把多條語句寫在同乙個,否則報錯

go語言定義的變數或者import的包如果沒有使用到,**不能編譯通過。

大括號都是成對出現的,缺一不可。

變數宣告:var 變數名 型別= 值

如果型別相同,一次可以宣告多個變數 ,如var a,b,c int

如var sun int 宣告了乙個int型的變數,預設為0

自動推導型別 變數名 :=值

所有的位元組byte都對應乙個ascall碼,println會輸出ascall碼,要輸出值printf(「%c」,變數)0對於48,a對應97,a對於65

int和int64相互之間頁需要型別轉換,轉換為int就是int(變數名),轉換為int64就是int64(變數名)

字元用單引號(『』),字串用雙引號(「」),在使用字串雙引號時系統會自動在後面新增乙個結束標誌\0,輸出時會輸出\0前所有的字元,但是字元沒有

顯式型別定義 : const 常量名 型別=值

隱式型別定義 : const 常量名=值

多個相同型別的宣告可以簡寫為: const c_name1, c_name2 = value1, value2

注意:常量的值不允許檢視位址也不能宣告了不給值

const(

a =iota

b c =iota

d=123

e f=iota g)

fmt.println(a,b,c,d,e,f,g)

//結果為:0 1 2 123 123 5 6

iota第乙個開始從0進行自增賦值

如果兩個在一行中,並且都沒有自定義賦值,iota數不會進行增加,

如果自定義變數,如果不用iota,那麼變數會跟著這個自定義的一樣

fmt.println()和fmt.print()的區別就是前者自帶換行

使用fmt.printf()進行格式化輸出

fmt.scanf(&a)//可以直接進行接受輸入

fmt.scanf(「%d %s」,&a,&b)//代表接受乙個整數和乙個字串,其中要用空格進行隔開,不能使用換行

建議地型別轉成高型別,不然會導致資料精度

for

for 初始化;條件;變化語句
//這個for不像c語言,他不需要括號

在go語言中沒有while,但是for也可以實現while

for 條件
if

if()else if()else
switchswicth 變數

定義:

func 函式名(形參)
有返回值時的格式:在go中可以允許有多個放回值

func 函式名(形參)函式返回值
例如:

package main

import "fmt"

func main()

func add(a int,b int)int

函式字面量的語法和函式宣告相似,區別在於func關鍵字後沒有函式名

package main

import "fmt"

func main()(10,20)//使用()直接進行呼叫

fmt.println(sum)//函式位址

}

函式字面量的語法和函式宣告相似,區別在於func關鍵字後沒有函式名

通過匿名函式這種方式定義的函式可以訪問完整的詞法環境,就是定義的內部函式可以引用改函式的變數

func squares() func() int	

}func main()

squares的例子證明,函式值不僅僅是一串**,還記錄了狀態。在squares中定義的匿名內 部函式可以訪問和更新squares中的區域性變數,這意味著匿名函式和squares中,存在變數引 用。這就是函式值屬於引用型別和函式值不可比較的原因。go使用閉包(closures)技術實 現函式值,go程式設計師也把函式值叫做閉包。

在go語言中,可以把函式看作乙個型別的值對待

函式值屬於引用型別和函式值不可比較,也不能用函式值作為map的key,但是可以和nil作比較

如果函式型別的零值是nil。呼叫值為nil的函式值會引起panic錯誤:

使用函式值,我們可以將遍歷結點的邏輯和操作結點的邏輯分離,使得我們可以復用遍歷的邏輯,從 而對結點進行不同的操作。(這個我還不知道什麼意思)

package main

import "fmt"

func main()

func te(arr ... int)

fmt.println(i)//0

}

函式內為區域性變數,函式外為全域性變數

package main

import "fmt"

var a int = 10//定義全域性變數a

func main() 

func add()()

全域性變數注意的一些方面:

在函式外部定義的變數 成為全域性變數

作用域是在專案中整個檔案去使用

定義的全域性變數名不能和其他檔案中的全域性變數重名

全域性變數名可以和區域性變數名重名

全域性變數儲存在記憶體的資料區

如果全域性變數定義

Go學習筆記 1 基礎語法

package main import fmt 宣告全域性變數 var ds string 健身女孩 func main s1,s2 int方法引數及型別,int,string 表示返回值型別且返回多個值 func add s1,s2 int int,string 3 說明 1 package用來宣...

go語言 基礎1

1.關於定義變數 1 定義變數 var 變數名 變數型別 2 定義初始化一步完成 變數名 value 可以推斷變數的型別 go定義的變數 定義並初始化 必須被用到,否則會報錯 3 結構型別 type person struct 4 type int 64 int64 類似c 的typedef 但go...

go語言基礎(1)

匯入主函式的包 package main fmt format 包含格式化輸入輸出 import fmt main 主函式,是程式的主入口,程式有且只有乙個主函式 func main 格式化輸入輸出 fmt.println 輸出資料,自帶換行 fmt.print 輸出資料,不帶換行 fmt.prin...