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...