Go語言基礎--命名&變量&基本數據類型

命名規則

  1. go語言中的函數、變量、常量、類型、語句標籤和包的名稱遵循一個簡單的規則:名稱的開頭是一個字母或者下劃線,後面可以跟任意數量的字符/數字和下劃線,並區分大小寫。如heapSort和HeapSort是不同名稱。
  2. 在命名時不能使用go語言語法中的保留關鍵字
  3. 函數名/變量名等 第一個字母的大小寫決定其可見行是否跨包。如果名稱以大寫字母開頭,它是導出的,意味者它對包外是可見的和可訪問的,可以被包之外的其他程序所引用。
func main() {
	fmt.Println("hello world")		//Println()以大寫字母開頭,可以被外面的包調用
}
  1. 命名風格:當遇到由單詞組合的名稱時,Go程序員使用"駝峯式"的風格–更喜歡使用大小寫而不是下劃線。

GO變量

語法格式var name type = expression:

  1. var:代表聲明一個變量
  2. name:變量名,十一哦那個駝峯式
  3. type:變量類型
  4. expression:變量表達式
  5. 類型與表達式部分可以省略一個,但是不能都省略。
    1. 類型省略,它的類型將由初始化表達式決定
    2. 表達式省略:其初始值對應於類型的零值:
      a. 對於數字是0,
      b. 對於布爾值是false,
      c. 對於字符串是"",
      d. 對於接口和引用類型(slice、指針、map、通道、函數)是nil。
      e. 對於一個像數組或者結構體這樣的複合類型,零值是其所有元素或成員的零值。

常見的變量使用方式

/*單變量*/
var tmp int			//聲明一個int類型的變量,省略初始值,初始值默認爲0
var tmp int = 10	//聲明+初始化值爲10
var tmp = 10		//聲明+初始化,省略類型,由編譯器推導出類型
tmp := 10			//短變量聲明方式,聲明和初始化一個變量,一般在局部變量的聲明和初始化使用這種

/*多變量*/
tmp1, tmp2, tmp3 := 1, 2, 3
var tmp1, tmp2, tmp3 = 1,2,3

/*短變量複製注意點*/
tmp := 10			
tmp, tmp1 := 11, 12	//短變量賦值時,需要保證左邊至少有一個變量沒有聲明過

go常量

  1. 常量是一種表達式,其可以保證在編譯階段就計算出表達式的值,並不需要等到運行時,從而使編譯器得以知曉其值。所以常量本質上都是屬於基本類型:布爾值、字符串或數字。
  2. 語法格式:const name type = value,type可以省略,例如:const pi = 3.1415926
  3. 常量生成器iota:
    1. iota是一個可以改變的常量,在編譯的過程中會被編譯器修改的變量
    2. iota不是一個值,他可以創建一系列相關值,而不是逐個值現式寫出。常量聲明中,iota從0開始取值,逐項加1
  4. iota在time包中的使用
// A Weekday specifies a day of the week (Sunday = 0, ...).
type Weekday int

const (
	Sunday Weekday = iota			// 0
	Monday							// 1
	Tuesday							// 2
	Wednesday						// 3
	Thursday						// 4
	Friday							// 5
	Saturday						// 6
)

go基本數據類型

go語言同Java/C/C++一樣是強類型語言,所以在使用時需要對變量表明具體的類型。

數字類型

整數
  1. int8:有符號8位整型(-128到127)
  2. int16:有符號16位整型(-32768 到 32767)
  3. int32:有符號32位整型(-2147483648 到 2147483647)
  4. int64:有符號64位整型(-9223372036854775808 到 9223372036854775807)
  5. uint8:無符號8位整型(0 到 255)
  6. uint16:無符號16位整型(0到65535)
  7. uint32:無符號32位整型(0 到 4294967295)
  8. uint64:無符號64位整型(0 到 18446744073709551615)
  9. rune類型是int32類型的同義詞,常常用於指明一個值是Unicode碼點(code point)
  10. byte類型是uint8類型的同義詞,強調一個值是原始數據,而非量值
  11. uintptr類型是無符號整數,其大小不明確,但足以完整存放指針
浮點數
  1. float32:IEEE 754標準中的float32的大小,最大約爲3.4e38
  2. float64:IEEE 754標準中的float64的大小,最大約爲1.8e308
複數:
  1. complex64:由float32組成
  2. complex128:由float64組成
  3. var x complex128 = complex(1, 2) // 1 + 2i

布爾類型

bool型首位值或布爾值(boolean)只有2種可能:真(true)和假(false)
var isTrue bool = true

字符串

  1. 字符串是不可變的字節序列,它可以包含任意數據,包括0值字節
  2. 文本字符串被解讀成按照UTF-8編碼的Unicode碼點(文本符號)序列。
  3. string底層其實就是一個[]byte(slice類型),並且可以直接跟[]byte類型互相轉換(string本質就是一個字符流)
  4. 字符串中的字符是不能修改的,string是一個只讀的類型,不能修改意味着兩個字符串能安全地公用同一段底層內存,使的複製任何長度字符串的開銷都很低廉
  5. 字符串的兩種格式:
var str string = "123456"		//用於定義一個單行字符串
var str string = `hello	
			world`				//``用於定義一個多行的字符串,內部進行原樣解析
  1. 字符串轉譯:
\a	"警告"或響鈴
\b	退格符
\f	換頁符
\n	換行符(直接跳到下一行的同一位置)
\r	回車符(值返回到行首)
\t	製表符
\v	垂直製表符
\'	單引號
\"	雙引號
\\	反斜槓
  1. 字符串支持易用str[0] 數組下標的方式訪問字符串中的單個元素
  2. 字符串支持使用+,進行字符串拼接
  3. 字符串和byte[] (字節slice)
    go語言中提供類4個標準包對字符串操作特別重要:bytes、strings、strconv和unicode。
    1. strings: 提供類了許多函數,用於搜索、替換、比較、修改、切片與鏈接字符串
    2. bytes:提供了與strings類似的函數,用於操作字節slice([]byte類型,其某些屬性和字符串相同),由於字符串不可變,因此按增量方式構建字符串會導致多次的內存分配和複製。bytes.Buffer類型會更高效。
    3. strconv:包中的函數主要用於轉換布爾值、整數、浮點數爲與之對應的字符串形式,或者把字符串轉換爲布爾值、整數、浮點數,還有爲字符串添加/去除引號的函數
    4. unicode:包備有判別文字符號值特性的函數,如IsDight、IsLetter、IsUpper和IsLower。
    5. 具體瞭解包中的所有函數與用法,可以參考go語言標準庫文檔中文版
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章