資料型別
函式外部定義的包級名字,如果首字母大寫,則可以被其它包訪問。
var
:變數
const
:常量
type
:型別
func
:函式
var 變數名 變數型別 = 初始值
其中變數型別
和初始值
可以省略其一。
如果省略變數型別
,那麼會根據初始值
自動推倒變數型別
;如果省略初始值
,那麼會進行預設初始化為對應變數型別
的零值
。
a, b :=
"hi"
,true
簡短變數宣告左邊的變數至少有乙個是新的變數,否則需要使用多重賦值。
比較下面兩份**:
var cwd string
func
init()
log.
printf
("working directory = %s"
, cwd)
}
var cwd string
func
init()
log.
printf
("working directory = %s"
, cwd)
}
go語言將資料型別分為4類:
基礎型別:數字、字串、布林型
復合型別:陣列、結構體
引用型別:指標、切片、字典、函式、通道
介面型別:
unicode字元rune
型別與int32
型別等價
byte
與uint8
等價
字串不可變。
rune
與string
的轉換:
s :=
"hello"
s2r :=
rune
(s)r2s :=
string
(s2r)
byte
與string
的轉換:
s :=
"world"
s2b :=
byte
(s)b2s :=
string
(s2b)
strings 包提供了許多如字串的查詢、替換、比較、截斷、拆分和合併等功能。
bytes 包也提供了許多類似功能的函式,但是針對和字元個有著相同結構的byte 型別。
strconv 包提供了布林型、整型數、浮點數和對應字串的相互轉換,還提供了雙引號相關的轉換。
unicode 包提供了 isdigit、isletter、isupper 和 islower 等類似功能,它們用於給字元分類。
path 和 path/filepath 包提供了關於檔案路徑的操作。
陣列與其它語言的陣列基本一致。
slice
s :=
int// slice
z :=
[...
]int
// array
sl :=
make([
]int
,len
,cap
)// slice
s =(s,5)
s =(s,6,
7,8)
mapmp :=
make
(map
[string
]int
)ages :=
map[
string
]int
delete
(ages,
"alice"
)// 刪除元素
for k, v :=
range ages
// check if map contains a specific element
val, ok := ages[
"jiang"]if
!ok
結構體
匿名成員:
type point struct
type circle struct
type wheel struct
var w wheel
w.x =
10// equivalent to w.circle.point.x = 10
w.y =
20w.radius =
100w.spokes =
30
jsonimport
"encoding/json"
json.
marshal()
json.
marshalindent()
json.
unmarchal
()
GO語言基礎語法
語言變數 go語言的語言符號又稱記法元素,共包括5類,標籤符 identifier 關鍵字 keyword 操作符 operator 分隔符 delimiter 字面量 literal 它們是組成go語言 和程式的最基本單位。go語言的所有源 都必須由 unicode 編碼規範的 utf 8 編碼格...
Go 語言基礎語法
go 標記 go 程式可以由多個標記組成,可以是關鍵字,識別符號,常量,字串,符號。如以下 go 語句由 6 個標記組成 fmt.println hello,world 6 個標記是 每行乙個 1.fmt 2.3.println 4.5.hello,world 6.行分隔符 在 go 程式中,一行代...
Go 語言基礎語法
上一章節我們已經了解了 go 語言的基本組成結構,本章節我們將學習 go 語言的基礎語法。go 程式可以由多個標記組成,可以是關鍵字,識別符號,常量,字串,符號。如以下 go 語句由 6 個標記組成 fmt.println hello,world 6 個標記是 每行乙個 1.fmt 2.3.prin...