標籤:複數 返回 type lex some 輸出 amp boolean 子串
一,go的資料類型和操作符
1,布爾類型
go語言中bool 類型只有兩個值:true和false;不像其它語言中0和1 也可以表示布爾類型,這在go語言中是不允許的,另外定義一個bool 類型,預設值為false
a. var b bool (預設為false)
b. var b bool = true
c. var b = true
2, 操作符
a. == 等於
b. != 不等於
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 mainimport ( "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 mainimport ( "fmt")const(a = iotabc)const (d = iotae)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 {
}
go語言學習--基礎篇(2)