go-study

package (包)golang

  • 一個目錄下面全部的.go文件的包名必須相同. 包名通常和目錄名相同(是約定, 不是強制), 包名都小寫
  • main包是一個特殊的包名, 在main包中, 必須包含func main()函數
  • 導入包(import)的時候, 使用的是包所在目錄的路徑, 路徑中不用包含包的名字, 在使用包的時候,直接用包名(如 fmt.Println)

可見性規則數組

當標識符(包括常量、變量、類型、函數名、結構字段等等)以一個大寫字母開頭,如:Group1,那麼使用這種形式的標識符的對象就能夠被外部包的代碼所使用(客戶端程序須要先導入這個包),這被稱爲導出(像面嚮對象語言中的 public);標識符若是以小寫字母開頭,則對包外是不可見的,可是他們在整個包的內部是可見而且可用的(像面嚮對象語言中的 private )。併發

聲明語句ide

Go語言主要有四種類型的聲明語句:var、const、type和func,分別對應變量、常量、類型和函數實體對象的聲明函數

函數ui

main 和 init 函數既沒有參數,也沒有返回類型spa

佔位符  https://studygolang.com/articles/2644線程

  • %t  : 布爾類型
  • %p : 指針, 表示爲十六進制,並加上前導的0x
  • %s : 字符串
  • %c : 字符
  • %b , %o , %d : 二進制 , 八進制 , 十進制
  • %x , %X : 十六進制小寫 , 十六進制大寫
  • %T : 變量類型
  • %v : 根據數據類型輸出對應格式的值
  • %% : 百分號
  • %q : 用引號包含字符串
  • %5s , %-5s : 在格式化數字時,能夠在動詞的「%」後面使用一個數字來控制結果圖形的寬度和精度。默認爲右對齊, 在數字前面加上"-"能夠左對齊
  • %06d : 使用0而不是空格填充, 對於數值類型會把填充的0放在正負號後面
  • %3.3f : 浮點數的寬度和精度

內置函數指針

  • len : 返回某個類型的長度或數量
  • cap
  • new
  • make
  • new 和 make的區別  https://studygolang.com/articles/1890

數組對象

數組的長度和類型一塊兒構成了數組的類型, 好比 var array 

實現接口 https://www.jianshu.com/p/d87c69ac6ce7

當涉及到咱們該怎麼讓咱們的類型實現接口時,Go 語言是特別的一個。Go 語言不須要咱們顯式的實現類型的接口。若是一個接口裏的全部方法都被咱們的類型實現了,那麼咱們就說該類型實現了該接口。

數據類型

  • 布爾類型不能接受其餘類型的賦值,不支持自動或強制的類型轉換
  • int和int32在Go語言裏被認爲是兩種不一樣的類型

可賦值(這裏不能叫類型轉換, 用可賦值表達更準確些)

A value x is assignable to a variable of type T ("x is assignable to T") in any of these cases:
在一下這些狀況值x能夠賦值給類型爲T的變量(x能夠賦值給T)

1. x's type is identical to T.
1. x的類型和T的類型相同
2. x's type V and T have identical underlying types and at least one of V or T is not a named type.
2. x和T具備相同的底層類型, 而且x和T至少有一個是非命名類型
3. T is an interface type and x implements T.
3. T是接口類型,x實現了T
4. x is a bidirectional channel value, T is a channel type, x's type V and T have identical element types, and at least one of V or T is not a named type.
4. x是雙向的chan類型的值, T是chan類型, x和T具備相同的元素類型, 而且x和T至少有一個是非命名類型
5. x is the predeclared identifier nil and T is a pointer, function, slice, map, channel, or interface type.
5. x的值爲nil, 而且T是指針、函數、切片、映射、通道或接口類型
6. x is an untyped constant representable by a value of type T.
6. x是一個沒有指定類型的常量, 能夠賦值給類型T(這裏要遵循第一條原則, 但數字類型除外)

 

整型數據類型及取值範圍

類型 字節 範圍
int8  1  -128 ~ 127
uint8  1  0 ~ 255
int16  2  -32 768 ~ 32 767
uint16  2  0 ~ 65 535
int32  4  -2 147 483 648 ~ 2 147 483 647
uint32  4  0 ~ 4 294 967 295
int64  8  -9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807
uint64  8  0 ~ 18 446 744 073 709 551 615
int 平臺相關   平臺相關
uint 平臺相關  平臺相關 
uintptr  同指針 在32位平臺下爲4字節,64位平臺下爲8字節

 

goroutine/channel

  • goroutine是Go語言中的輕量級線程實現,由Go運行時(runtime)管理
  • 函數調用前加上go關鍵字,此次調用就會在一個新的goroutine中併發執行。當被調用的函數返回時,這個goroutine也自動結束了。須要注意的是,若是這個函數有返回值,那麼這個返回值會被丟棄。
  • 在沒有使用channel時,  Go程序從初始化main package並執行main()函數開始,當main()函數返回時,程序退出,且程序並不等待其餘goroutine(非主goroutine)結束。
  • 在向channel中寫入數據前, 對channel的讀操做是阻塞的, 讀channel的位置就是同步goroutine的位置
本站公眾號
   歡迎關注本站公眾號,獲取更多信息