一直在 segment fault 上面實行自己的拿來主義,但其實我是一直很樂意分享的人,而且特別喜歡寫,以前一直都是在自己的部落格裡面寫,但是沒啥人看,也形成不了交流,所以,申請在 segment fault 上面開個專欄,以後還忘大家多多指教,這篇文章只是想試試 segment fault的編輯器,內容是前幾天寫的。
go語言的語言符號又稱記法元素,共包括5類,標籤符(identifier
)、關鍵字(keyword
)、操作符(operator
)、分隔符(delimiter
)、字面量(literal
),它們是組成go語言**和程式的最基本單位。
go語言的所有源**都必須由unicode
編碼規範的 utf-8 編碼格式進行編碼。
在go語言**中,每乙個識別符號可以代表乙個變更或者乙個型別(即識別符號可以被看作是變數或者型別的代號或者名稱),識別符號是由若干字母、下劃線(_)和數字組成的字串行,第乙個字元必須為字母。同時,使用乙個識別符號在使用前都必須先宣告。在乙個**塊中,不允許重複宣告同乙個標識。
**包宣告(在go語言中還存在一類特殊的識別符號,叫作預定義識別符號,這類識別符號隨go語言的原始碼一同出現,主要包括以下幾種:package pkg_name
)並不算是乙個宣告,因為**包名稱並不出現在任何乙個作用域中,**包宣告語句的目的只是為了鑑別若干原始碼檔案是否屬於同乙個**包,或者指定匯入**包時的預設**包引用名稱。乙個限定識別符號代表了對另乙個**包中的某個識別符號的訪問,這需要兩個條件:
另乙個**包必須事情由go語言的匯入宣告
import
匯入;某個識別符號在**包中是可匯出的。
識別符號可匯出的前提條件有下面這兩個:
識別符號名稱中的第乙個字元必須是大寫;
標識必須是被宣告在乙個**包中的變數或者型別的名稱,或者是屬於某個結構體型別的欄位名稱或者方法名稱。
所有基本資料型別的名稱
介面型別error
常量true
、false
以及iota
由乙個下劃線表示的標識 _ 為空識別符號,它一般被用在一需要引入乙個新繫結宣告中,如:
import _ "runtime/cgo"
關鍵字是指被程式語言保留頁不讓程式設計人員作為識別符號使用的字串行。因此,關鍵字也稱為保留字。
go 語言中所有的關鍵只有25個:
程式宣告:import
、package
程式實體宣告和定義:chan
、const
、func
、inte***ce
、map
、struct
、type
、var
程式流程控制:go
、select
、break
、case
、continue
、default
、defer
、else
、fallthrough
、for
、goto
、if
、range
、return
、switch
簡單來說,字面量就是表示值的一種標記法,但是在go語言中,字面量的含義要更廣一些:
用於表示基礎資料型別值的各種字面量。
使用者構造各種自定義的復合資料型別的型別字面量,如下面這個字面量表示了乙個名稱為 person 的自定義結構體型別:
type person struct
用於表示復合資料型別的值的復合字面量,更確切地講,它會被用來構造型別 struct(結構體)、array(陣列)、slice(切片)和map(字典)的值。如下面的字面量可以表示上面的那個 person 結構體型別的值:
person(name: "eric pan", age: 28, address: "beijing china"}
乙個型別確定了一類值的集合,以及可以在這些值上施加的操作。型別可以由型別名稱或者型別字面量指定,型別分為基本型別和復合型別,基本型別的名稱可以代表其自身,比如:
var name string
string 即為乙個基本型別,go 語言中的基本型別有:bool、byte、int/uint、int8/uint8、int16/uint16、int32/uint32、int64/uint64、float32、float64、complex64、complex128,共18個,基本型別的名稱都必須預定義識別符號。除了 bool 與 string 外,其它的都稱為數值型別。
除了基本型別外,go語言還有八個復合型別:array(陣列)、struct(結構體)、function(函式)、inte***ce(介面)、slice(切片)、map(字典)、channel(通道)以及pointer(指標)。
復合型別一般由若干(包括0)個其他已被定義的型別組合而成,如定義一本書的結構體:
type book struct
go語言中的型別又可以分為靜態型別和動態型別,乙個變數的靜態型別是指在變數宣告中示出的那個型別,絕大多數型別的變數都只擁有靜態型別,唯獨介面型別的變數例外,它除了擁有靜態型別之外,還擁有動態型別,這個動態型別代表了在執行時與該變數繫結在一起的值的實際型別。
每乙個型別都會有乙個潛在型別,如果這個型別是乙個預定義的型別(也就是基本型別),或者是乙個由型別字面量構造的復合型別,那麼它的潛在型別就是它自身,比如 string 型別的潛在型別就是 string,在上面提到的 book 的潛在型別就是 book,但是如果乙個型別並不屬於上述情況,那麼這個型別的潛在型別就是在型別宣告中的那個型別的潛在型別,比如我們按以下方式宣告乙個 mystring 型別:
type mystring string
mystring 型別的潛在型別就是 string 型別的潛在型別,實際上,我們可以將 mystring 看作是 string 型別的乙個別名,在go 語言中的基本資料型別 rune 型別就是如此,它可以看作是 uint32 型別的乙個別名型別,其潛在型別就是 uint32 ,但是一類要注意, mystring 與 string 卻並不是乙個相同的型別。
潛在型別在宣告過程中是具有可傳遞性的,如下面我們再宣告乙個 istring 型別:
type istring mystring
istring 型別的潛在型別同樣就是 string 型別。 Go 11 關鍵字與識別符號
go語言的 中的幾乎所有東西都有乙個名稱或識別符號,另外,go語言是區分大小寫的,這與c語言家族中的其它語言相同。有效的識別符號必須以字元 可以是任何 utf 8 編碼的字元或 數字除外 開頭,然後緊跟著 0 個或多個字元或 unicode 數字,如 x56 group1 x23 i 12。以下是無...
GO 資料型別 關鍵字 識別符號
cible 學習筆記 1.數字型別 整型和浮點型。2.布林型 只可以是常量 true 或者 false。3.go 語言的字串的位元組使用 utf 8 編碼標識 unicode 文字。4.複數 complex128 64 位實數和虛數 和 complex64 32 位實數和虛數 其中 complex1...
go語言筆記 (資料型別,關鍵字,識別符號)
共25個關鍵字 break default,func inte ce,select,case defer go map struct,chan else goto package switch,const fallthrough,if range type,continue for import,r...