###### tags: `Golang` # 程式結構與變數 ![](https://miro.medium.com/max/3152/0*kiZqOe85BXYNAlH6.png) ## 程式結構 ```go= package main import ( "fmt" "math" ) func main(){ fmt.printf("Hello world\n") } ``` 1. 所有程式都由package組成 2. 主程式須由main()func作為進入點,同一個資料夾下只能有一個進入點,須有複數的話,要建立子資料夾隔開 3. package表示這支程式屬於哪個包 4. import 匯入其他包 5. fmt 匯入進來的包名 --- ## 變數宣告 ### 基本宣告 ```go= var a int //宣告整數 var b string = "Hello" //宣告字串 var c[] float32 //宣告浮點數陣列 var d func() bool //宣告方法變數,回傳bool型別 ``` 格式:var「變數名稱」「變數型別」 初始化變數只須在後方用「=」賦值 ### 多重宣告 ```go= var a,b,c int var ( d int e string f float32 ) ``` ### 大小寫區分 ```go= // 供目前的包使用 var a int // 匯出給外部使用 var B int ``` ### 短變數宣告 short variable declarations ```go= package main import "fmt" func main(){ year:= 2000 price,name := 100,"mask" //多重寫法 fmt.Println("%d",year) //2000 } ``` 短變數宣告只能用於函式內,使用「:=」,可以同時宣告以及初始化 --- ## 變數交換 swap ```go= var a,b = 1,2 //傳統 var temp int temp = a a = b b = temp //多重swap寫法 a,b = b,a ``` --- ## 匿名佔位符 anonymous placeholder ```go= func getName()(string,string){ return "Mask","Joker" } func main(){ var name,_=getName() fmt.Println("My name is" + name) //My name is Mask } ``` 使用一個符號佔據原本放變數的位置,目的是忽略對應位置的賦值,例子中就是忽略"Joker"。 --- # Dark Theme CSS {%hackmd theme-dark %}