常量
//關於const的用法
const obj1 string
="cjs"
const obj2 =
"nb"
//也可把tped去掉,系統會自動識別型別
const
( sunday =
7 monday =
1 tuesday =
2 wednesday =
3 thursday =
4 friday =
5 saturday =6)
//關於iota的用法,有點複雜,使用的時候,先進行測試
//以後可以使用iota,優雅的解決很多問題
const
( sunday =
7 monday =
iota
//1 tuesday //2
wednesday //3
thursday //4
friday //5
saturday //6
)
變數定義
var a,b int
var c string
或者var
(//這種寫法一般用於宣告全域性變數
a int
//初始化為0
b string
//初始為空字串
c float64
//初始化為0.0
d bool
//初始化為flase
)
變數初始化的幾種情況
var a int
=100
var b =
"cjs"
//自動識別型別
var(
c =1 d =
"nb"
)e :=
true
//直接賦值
值型別與引用型別
int、float、bool 和 string
以及 陣列 和 結構體 都屬於值型別
啥是值型別,就是將乙個變數的值可以通過「=」賦值給另乙個變數
注意的是,這裡的陣列也是直接賦值,不用乙個乙個傳
指標、切片、map、channel都屬於引用型別
init函式
變數除了可以在全域性宣告中初始化,也可以在 init 函式中初始化。
這是一類非常特殊的函式,它不能夠被人為呼叫,而是在每個包完成初始化後自動執行,
並且執行優先順序比 main 函式高。
每個原始檔都只能包含乙個 init 函式。初始化總是以單執行緒執行,並且按照包的依賴關係順序執行。
package trans
import
"math"
var pi float64
func
init()
go中的數字型別
整型
int 和 uint
在 32 位作業系統上,它們均使用 32 位(4 個位元組),
在 64 位作業系統上,它們均使用 64 位(8 個位元組)。
uintptr 的長度被設定為足夠存放乙個指標即可。
整數:int8(-
128-
>
127)
int16(-
32768
->
32767)
int32(-2,
147,
483,
648-
>2,
147,
483,
647)
int64(-9,
223,
372,
036,
854,
775,
808-
>9,
223,
372,
036,
854,
775,
807)
無符號整數:
uint8(0
->
255)
uint16(0
->65,
535)
uint32(0
->4,
294,
967,
295)
uint64(0
->18,
446,
744,
073,
709,
551,
615)
浮點型go是沒有float型別的,也沒有double型別
只有float32和float64型別
盡可能的使用float64型別,因為math、庫里都是flaot64型別
go 中不允許不同型別之間的混合使用
一些注意
取餘運算只能作用於整數
++、--只能用於字尾,且只能作為單獨語句,不能作為表示式
var arr =
100var brr int
arr++
//正確
++arr //錯誤
brr = arr++
//錯誤
fmt.
println
(arr)
fmt.
println
(brr)
型別別名
type tz int
type st string
型別別名,得到的新型別,並非和原型別完全相同
字元型別
嚴格來說,這並不是 go 語言的乙個型別,字元只是整數的特殊用例。
byte 型別是 uint8 的別名,對於只占用 1 個位元組的傳統 ascii 編碼的字元來說,完全沒有問題。
例如:var ch byte
='a';字元使用單引號括起來。
迴圈結構
if
-else
類似c語言的用法,
switch
類似c語言的用法,且沒有break
如果想繼續執行後面的內容,***,用fallthrough
forgo語言沒有while 只能用for代替
for有與c語言一樣的用法
fortrue
/或者乙個表示式
for i,x:=
range obj 的用法
這裡注意下,x為接收每乙個裡面的值,這是拷貝,並非引用,改變x的值,不會對原陣列或切點產生變化
break與continue
break只能跳出最內層迴圈
continue 都懂
Golang 介面 防備忘
介面定義其實就是面對物件裡面的多型性,而且比面對物件裡面的更容易理解。介面定義了一組方法 方法集 但是這些方法不包含 實現 它們沒有被實現 它們是抽象的 介面裡也不能包含變數。type namer inte ce 上面的 namer 是乙個 介面型別。按照約定,只包含乙個方法的 介面的名字由方法名加...
Golang陣列 防備忘
沒有新東西,就是整理一遍,加強記憶!最基礎形式var obj 5 intobj 3 99 索引從0開始,可通過下標方式訪問,同c語言定義的同時賦值obj int obj int 這個他媽也是切片 obj 6 int 這三種方式均可 var obj 5 string 給對應的下標賦值,其餘下標資料為空...
Golang 檔案操作 防備忘
檔案概念 上圖中,返回的這個file指標,有三種叫法 檔案物件 檔案指標 檔案控制代碼 都可以 我們在理解的時候,其實file就是乙個指標,這樣更容易理解。檔案的開啟 關閉file,err os.open 路徑 檔名 if err nilerr file.close 檔案關閉 if err nil用...