Golang Day1
環境設定
- export GOROOT=/usr/local/go
- export PATH=$PATH:$GOROOT/bin
- export GOPATH=/usr/local/godev
- export PATH=$PATH:$GOPATH/bin
注意事項
- 預設安裝路徑 - /usr/local/go
- command + shift + G 可以在 Finder 下輸入要前往的資料夾
- command + shift + . 可以顯示隱藏資料夾
- go run *.go - 編譯並執行
測試指令
go version (若成功會顯示版本)
變數
- var name string = "my name is Omar"
- var ( a:=0, b:=0, c:=0 )
- 不宣告型別的方式,只存在 func
package main
import (
"fmt"
)
var (
name string = "apple"
)
func main() {
var (
a:=0
b:=1
c:=2
isCool:=true
)
}
Tips < 字串串接較快的方式 >
package main
import (
"fmt"
"bytes"
)
func main() {
var buffer bytes.Buffer
for i:=0; i< 1000; i++ {
buffer.WriteString(fmt.Sprintf("%d",i))
}
fmt.Println(buffer.String())
}
Int Convert to string
- fmt.Sprintf("%d", int)
- strconv.Itoa()
條件式
- switch-case - 不需要有 break
- if - 可以有 callback 來進行 compare
package main
import (
"fmt"
)
func IsTest() bool {
return true
}
func main(){
if bTest:=IsTest(); bTest == true{
fmt.Println("Is Test")
}
}
陣列 & Slice
package main
import (
"fmt"
)
func main() {
//declare arr
var arr [5]int
for i := 0; i < 5; i++ {
arr[i] = i
}
fmt.Println(arr)
//slice
var sli []string
sli = make([]string, 5, 5)
for i := 0; i < 5; i++ {
sli[i] = fmt.Sprintf("%c", 65+i)
}
fmt.Println(sli)
slit := sli[2:4] //將 sli 內容參照到另一個 slice 中, slice [StartIndex,EndIndex -1]
fmt.Println(slit)
fmt.Println("this len:", len(slit)) // endindex - startindex
fmt.Println("this cap:", cap(slit)) // original capcity - startindex
}
Tips <直接參照的方式,可能會浪費空間,可以使用 copy 替代>
package main
import (
"fmt"
)
func main() {
s:= make([]string,len(sli[2:4]))
copy(s,sli[2:4]) //s=[C,D]
s[1]="Z"
fmt.Println(s) //C、Z
fmt.Println("this len:", len(s)) // endindex - startindex , 4 - 2,故是 2
fmt.Println("this cap:", cap(s)) // startindex ~ (endindex - 1) ,C、Z,故是 2
}
MAP
package main
import (
"fmt"
)
func main() {
//一般 Map
PriceMap = make(map[string]string)
PriceMap["apple"] = 100
fmt.Println(PriceMap)
//巢狀 Map
M = make(map[string]map[string]string)
M["info"] = map[string]string{
"age":"18"
}
fmt.Println(M)
}
Func
一般來說,Go 不是 OOP 語言,比較接近 Function Programming; 而比較特別的是,GO 的 func 可以有多個回傳值
package main
import (
"fmt"
)
func GetInfo()(age string,name string){
age = "18"
name = "Omar"
return
}
func main() {
age,name:=GetInfo()
fmt.Println(age,name)
}
0 意見