一,go的數據類型和操做符數組
1,布爾類型框架
go語言中bool 類型只有兩個值:true和false;不像其它語言中0和1 也能夠表示布爾類型,這在go語言中是不容許的,另外定義一個bool 類型,默認值爲falseide
a. var b bool (默認爲false)函數
b. var b bool = trueui
c. var b = truespa
2, 操做符操作系統
a. == 等於代碼規範
b. != 不等於blog
c. !b 取反操做字符串
d. && 與運算
e. || 或運算
布爾類型格式化輸出佔位符 %t
3,整數和浮點數類型
a. int8,int16,int32,int64 (有符號整數類型) 其中數字表示多少位
b. uint8,uint16,uint32,unit64 (無符號整數類型)
c. int 和 uint, 和操做系統平臺有關
d. float32 和float64浮點數
注意:go 語言是強類型語言,其實int類型,不通字節之間也不能直接轉化,例如: int8類型的變量,不能直接賦值int16
全部的整數初始化爲0,全部的浮點數初始化爲0.0,布爾類型初始化爲false
4,複數類型
a,兩種形式:complex64和complex128
b,var c complex64 = 5 +10i
c,內置函數complex(re,im)構造一個複數
d,萬能輸出佔位符:%v
5,位操做
a,與操做:&
1 & 1 = 1;1 & 0 =0; 0 & 1 = 0;0 & 0 =0
b,或操做
1 | 1 = 1;1 | 0 =1;0 | 1 =1;0 & 0 =0
c, 異或操做
1 ^1 = 0;1 |0 =1;0 |1 =1; 0 & 0 =1
6,位操做符
a. 左移 << 1<< 10 = 1024
b. 右移 >> 1024 >> 10 = 1
7,操做符
a. 邏輯操做符, ==,!=,<,<=,>=
b. 算數操做符, +,-,*,、,%
二,go語言代碼規範
1,在go 語言中任何一個代碼文件隸屬於一個包
2,import 關鍵字,引用其餘包:
import("fmt")
導入多個包
import (
"fmt」
「os」
)
3,同一個包的函數調用,直接調用便可,要是導入其餘包,須要加上包的名字+點+函數名稱,例如 calc.add,calc 爲報名,add 爲其中的一個函數
4,包訪問控制規則:
a.函數名或者變量開頭字母大寫,意味着這個函數或者變量,能夠在其它源碼中導入
b.函數名或者變量開頭字符小寫,意味着這個函數或者變量,不能夠導出,爲私有屬性
5,每一個源碼文件能夠含一個init 函數,這個init 函數自動被go運行的框架調用,示例
package main import ( "fmt" ) func init(){
fmt.Println("init called") } func main() { fmt.Println("main called") #先輸出init called,最後輸出main called }
6. 包的只初始化,不引用,在go 語言,通常狀況下,一個包不引用,是不能夠導入的,不然會編譯出錯,可是也有一種狀況是能夠導入包的,進行初始化,即在包名前加_
import (
_"add"
)
三,常量
1. 常量使用const修飾,並且永遠只讀,不能修改
2. const只能修飾boolean,number(int相關類型,浮點數,complex)和string
3. const的定義 const identifier [type] = value
4. 多個值定義 const(
a = 1
b = 2
c = 3
)
5. iota 字const 中的應用 iota 初始值爲0,之後定義參數,若是附其它值,按順序加1,遇到新的const iota 的值重置
package main import ( "fmt" ) const( a = iota b c ) const ( d = iota e ) func main(){ fmt.Printf("%d,%d,%d,%d,%d",a,b,c,d,e) } 輸出爲:0,1,2,0,1
6,在const 賦值中,若是某個變量沒有賦值,那麼他的值默認爲上一個表達式的值
四,go語言中的內置包
1.time
func main() { now := time.Now() #獲取當前時間 second :=now.Unix() #將當前時間轉化成時間戳 }
2, os
a. 獲取主機名
func main() { name,ret := os.Hostname() fmt.Printf("%s %v",name.err) }
b. 獲取GoPATH
func main(){ val := os.Getenv("PATH") #os.Getenv 加變量參數 fmt.Printf("%s\n",val) }
五,字符串
1,字符串聲明
a. var b =string
b. var b = "hello"
c. var b string = "hello"
2. go 語言的引號
a. 雙引號,「」,能夠包含控制字符
b. 反引號,··,反引號字符都是原樣輸出
3. 字符串操做
a. 長度: len(str)
示例
func StrOperator() { str := "hello world" for index,val := range str { fmt.Printf("len:%d\n",len(str)) } }
b. 拼接: +,fmt.Sprintf
str2 :=str + "world"
c. 分割: string.Split,返回一個數組
str="hello world" result := strings.Split(str," ") #已空格分割 fmt.Printf("result"%v\n",result) #返回結果爲數組
d. 包含: string.Contains
str="hello world" result := strings.Contains(str,"he") fmt.Printf("result"%v\n",result) #返回true或者false
e. 前綴或後綴判斷: strings.HasPrefix,strings.HasSuffix
str = "baidu.com" if ret := strings.HasPrefix(str4,"http://"); ret == false { str4 = "http://" + str }
f. 子串出現的位置: string.Index(),strings.Lastlndex()
g. join 操做: string.Join(a[]string,Sep string)
六,流控制語句
1. if 語句
if conditionl {
// do something
} else if condition2 {
// do something
} else {
}
2. if 語法糖
if b:=100;b> 200 {
// do something
}
3. for 循環
a 初始化 condition 修改
for init;condition;modify { }
b 無限循環
for { }
for true { }
c for 遍歷字符串,數組,切片
for index,val :=range str {
}