Go 語言基礎

Go是一門類似C的編譯型語言,但是它的編譯速度非常快。這門語言的關鍵字總共也就二十五個,比英文字母還少一個,這對於我們的學習來說就簡單了很多。先讓我們看一眼這些關鍵字都長什麼樣:

break    default      func    interface    select
case      defer        go      map             struct
chan     else         goto    package      switch
const    fallthrough  if      range         type
continue for          import  return       var

注意事項

  • Go 只有一個入口:main package 下的 main 函數
  • 大括號必須要放在一句話的後面
  • Go 結尾不需要分號,除非一行裡面有多個語句
  • 函數內所有宣告的函數或變數都必須被使用到
  • Go 沒有 static
  • Go 沒有 char 資料型態
  • Go 沒有 try … catch,以 defer 取代 finally
  • Go 沒有 while 語法,以 for 取代即可
  • switch 不用 break 就會自動中斷,若要繼續執行,需要用:fallthrough
  • public 與 private function 是靠函數名稱的第一個字母表示,大寫表示該函數是 public
  • 不同類型的值是不能相加、減的

Hello World

package main

import "fmt"

func main() {
   fmt.Println("Hello, World");
}

structure

type SmallSoho struct {
    Name string //公有变量大写
    Sex string 
    kg int //私有变量小写
}

// 初始化
meStruct := new(SmallSoho) //可以申请一个空的结构体,返回一个指针
meStruct := &SmallSoho{} //同上
meStruct := SmallSoho{} //返回一个结构体,是类型的
meStruct := &SmallSoho{"small","男",1} //可以初始化
meStruct := &SmallSoho{Name:"SmallSoho"} //也可以键值对这样来初始化

函數

  • 函數第一個括號是傳入值,第二個括號是回傳值
  • 函數也可以當作是傳入值
type study func(int) bool //type 给函数个类型名,类似宏 函数的样子
func getAd(fun study) {
  //函数体
  study(3)
}
  • 不確定參數數量可以使用 …
func getAd(arr ...int) int {
  return len(arr)
}

傳值方式