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

  1. fmt.Sprintf("%d", int)
  2. 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)
}

  • Share:

You Might Also Like

0 意見