golang 基礎整理

數據類型

  • 數組:數組長度固定,是引用類型
  • 切片:長度可以變更,是引用類型
  • map:是一種數據結構,引用類型
  • channel:管道,主要用於協成之間傳遞數據,引用類型

defer

  • 函數中有多個defer的時候按照先入後出準則
  • defer在函數返回之後執行

例子

func main() {
   defer func() {
      fmt.Println(1)
   }()
   defer func() {
      fmt.Println(2)
   }()
   fmt.Println(3)
}
最後打印出321


func def() (t int) {
   defer func() {
      t++
   }()
   return 5
}
func main() {
   fmt.Println(def())
}
最後打印出 6

func def(i int) int {
   defer func() {
      i++
   }()
   return i
}
func main() {
   fmt.Println(def(1))
}
最後打印出 1

recover

處理panic,使用方法

defer func() {
      fmt.Println("Try to recover the panic")
      if p := recover();p!=nil{
         fmt.Println("recover the panic : ",p)
      }
   }()

json tag

  • json解析忽略某個字段,可以將首字母小寫,也可以json:"-"
  • omitempty:當字段爲空(默認值)時,不要解析這個字段。比如 false、0、nil、長度爲 0 的 array,map,slice,string
  • 重命名字段名,json:"FiledName"

  • Mutex: 當一個goroutine獲得了Mutex後,其他goroutine就只能乖乖的等待,除非該goroutine釋放這個Mutex
  • RWMutex在讀鎖佔用的情況下,會阻止寫,但不阻止讀
  • RWMutex在寫鎖佔用情況下,會阻止任何其他goroutine(無論讀和寫)進來,整個鎖相當於由該goroutine獨佔
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章