###### tags: `Golang`
# 程式結構與變數

## 程式結構
```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 %}