Go開發html
GO1.5以後, 底層都是用go寫的,因此1.5後都須要安裝go編譯器python
Go是強類型語,不一樣類型相加以及賦值是不容許的,全部的整數 初始化爲0,全部浮點數初始爲0.0,布爾類型初始化爲false
mysql
如何一個代碼文件最小單位都是包sql
各包直接最好別重名,負責會覆蓋bash
只能導入庫文件,不能導入另一個包的可執行文件,也就是帶有package main 開頭的包ide
若是須要導入另一個包,那這個被導入包的開頭package 能夠隨意寫函數
若是是同一包裏面的函數,直接調用便可,無需importui
需注意的是: 在運行go run 會報錯, 須要go build 或者go install 後執行編譯後的程序,不會報錯spa
不一樣包中函數,經過包名+點+函數名進行調用操作系統
在開發go的時候,若是寫入無用的代碼(也就是沒有執行,或調用) ,那也會報錯!! (go 作的很好)
例如:若是import 導入fmt ,可是程序中沒有使用,那就會報錯
全局只能聲明變量,一個語句是不能寫在全局
可執行的程序,必須放在mian函數裏面
包訪問控制權限
大寫意味着這個函數/變量是可導出
小寫意味着這個函數/變量是私有的,包外部不能訪問
初始化函數
func init(){ }
運行一個go程序的時候,會先執行init函數,運行完畢後,纔會運行main函數
#需注意的是: 當導入包的時候,先執行導入包的init函數,而後執行本程序的init函數
Go基礎
布爾類型 {輸出bool類型是用 :%t 輸出}
var b bool 和 var b bool = true 和 var b = true
操做符 == 和 !=
取反操做符: !b
邏輯操做類型: (下面的運算結果就是布爾類型 )
==:
!=
<
<=
>=
&& 和 || 操做符
&& :與 若是第一個爲假 那後面就不須要運算
|| : 或 若是第一個爲真 那後面就不須要運算
格式化輸出佔位符: %t 輸出布爾類型!!
算數操做符, +、 -、 *、 /、 %
數據類型和操做符
整數和浮點數
一個字節是8位
int八、 int1六、 int3二、 int64
uint八、 uint1六、 uint3二、 uint64
int 和 uint,和操做系統平臺相關
float32 和 float64浮點類型
全部整數 初始化爲0,全部浮點數初始化爲0.0,布爾類型初始化爲false
複數類型
兩種形式: complex64和complex128
var c complex64 = 5 + 10i
內置函數 complex(re, im) 構造⼀個複數
萬能輸出佔位符: %V
字符串操做:
位操做符
與操做: &
1 & 1 = 1 1 & 0 = 0 0 & 1 = 0 0 & 0 = 0
2. 或操做: |
1 | 1 = 1 1 | 0 = 1 0 | 1 = 1 0 & 0 = 0
3. 異或: ^ (相同的等於0 不一樣的等於1)
1 ^ 1 = 0 1 ^ 0 = 1 0 ^ 1 = 1 0 ^ 0 = 0
4. 左移 <<
1 << 10 = 1024 1 << 20 = 1M 1 << 30 = 1G
5.右移 <<
1024 >> 10 = 1 1024 >> 1 = 512 1024 >> 2 = 256
常量
常量使用const修飾,表明永遠是隻讀的,不能修改
const 只能修飾boolean, number( int相關類型、浮點類型、 complex)和string。
const( a = 1 b = 2 c = 3 )
#iota 初始化默認爲0, ##默認遞增 const( a = 1 << iota b c )
變量
var ( a int //0 b string //「」 c bool //false d int = 8 // 8 e string = 「hello」 //hello )
結構體 (struct 就是結構體定義)
struct 就是結構體定義 type User struct { name string flag uint8 }
init方法和導入包
導入其餘包概念,
func init(){} 初始化函數。。當init函數運行完畢。纔會運行mian函數,先執行導入包的init函數。而後執行本程序的init函數
package main import ( _ "godream/day2/mysql_deveices" "fmt" ) func main() { fmt.Println("hello") Say() }
條件判斷和循環
for循環的幾種寫法
第一種寫法
func TestFor() { for a :=0;a < 10;a++{ fmt.Println(a) } }
第二種寫法
func TestFor2() { var a int =0 for a <10{ fmt.Println(a) a++ } }
第三種寫法(循環字符串)
func TestForStr() { str :="hello world" for index,val :=range str{ fmt.Printf("index:%d --val:%c \n",index,val) } }
第四種寫法
func TestFor3() { var a int =0 for true{ fmt.Println(a) a++ } }
if判斷的幾種寫法
第一種
a :=Test() if a > 10 { fmt.Printf("good!%d\n",a) }
第二種
if a:=Test(); a>10{ fmt.Printf("高級!%d\n",a) }