左手Python,右手Go
- 2019 年 10 月 5 日
- 筆記

左手Python,右手Go
【今日知圖】 複製粘貼
y copy 複製 跟可視命令,移動命令一起連用 yy 複製一行 nyy 複製n行 p 粘貼 np 粘貼n次
0.說在前面1.HelloWorld程序2.基本語法3.條件判斷4.作者的話
0.說在前面
最近Go很火!!!所以我也來學習了,一起來嗨GO!
1.HelloWorld程序
package main import "fmt" func main(){ fmt.Println("Hello,World!") //單行注釋 /* 我是多行注釋 */ }
注意一點,main()後面的大括號不能放在下面,會有語法錯誤哦~
2.基本語法
注釋
單行注釋
//單行注釋
多行注釋
/*我是多行注釋*/
數據類型
- 布爾型
- 數字類型
- 字符串類型
- 派生類型
區別:Go的字符串是單個位元組連接!
數字類型有整型int,浮點型float32,float64等!
派生類型主要包含:
- 指針類型(Pointer)
- 數組類型
- 結構化類型(struct)
- Channel 類型
- 函數類型
- 切片類型
- 接口類型(interface)
- Map 類型
變量
【形式】
聲明變量的一般形式是使用 var 關鍵字:
var 變量名 type
變量名也跟其他語言一樣,起始不能為數字,由下劃線,數組,字母組成!
【單變量聲明】
例如:
package main var name = "光城" var a string var b bool func main(){ a = "learn" println(name,a,b) }
輸出:
光城 learn false
可以發現,b沒有初始化,那麼默認值為false
【多變量聲明】
這裡分為顯式與隱式定義!
//類型相同,但不是全局變量! var a1,a2,a3 string //自動判斷類型,於python一致,不需要顯式聲明類型 var v1,v2,v3 = "1","2","3" func main(){ println("顯式聲明類型並未初始化打印") a1="a1" a2="a2" a3="a3" println(a1,a2,a3) println("未顯式聲明類型並初始化打印") println(v1,v2,v3) }
輸出:
顯式聲明類型並未初始化打印 a1 a2 a3 未顯式聲明類型並初始化打印 1 2 3
main函數內部聲明並使用局部變量,必須在後面使用,否則報錯!!!
func main(){ var a string = "abc" println(a) }
變量的另一種定義形式:
var ( x1 int = 5 x2 string = "hi" x3 bool = true ) func main(){ println("全局變量打印") println(x1,x2,x3) }
輸出:
全局變量打印 5 hi true
綜上得出:定義在函數內部的是局部變量,局部變量必須進行使用,而函數外部未全局變量,可以直接聲明,後面不使用!!!
除了上述語法外,還有一個特別神奇的語法糖,可以直接不用var來定義變量!!!
func main(){ yufatang := "我是語法糖" println(yufatang) }
注意點::=
連用中間每空格,:=
要確保左值沒有被定義過!
常量
//顯式定義 const name string = "光城" //隱式定義 const PI = 3.14 //多個相同類型聲明 const c1,c2 = 1,2
枚舉
每個變量之間換行!!!
const ( Unknow=0 Femal=1 Male=2 ) println(Unknow,Femal,Male)
iota
iota 在 const關鍵字出現時將被重置為 0(const 內部的第一行之前),const 中每新增一行常量聲明將使 iota 計數一次。
例1:
const ( at = iota //0 b //1 c //2 d = "ha" //獨立值,iota += 1 e //"ha" iota += 1 f = 100 //iota +=1 g //100 iota +=1 h = iota //7,恢復計數 i //8 ) println(at, b, c, d, e, f, g, h, i)
輸出:
0 1 2 ha ha 100 100 7 8
例2:
const ( i1=1<<iota j=3<<iota k l ) println(i1,j,k,l)
輸出:
分別式向左移動0,1,2,3位,每移動1位乘以2。
1 6 12 24
運算符
算術運算符
這裡介紹區別,在go中由自增,只不過與c或c++有區別,看下面!!!
atest := 1 atest++ //正確 ++atest //錯誤,同理--一樣 b:=atest++ //錯誤,單獨作為語句
關係運算符
同c/c++,這裡略!
邏輯運算符
&&
,||
,!
,分別式與,或,非
位運算
&
,|
,^
,<<
,>>
賦值運算符
<<=
,>>=
,&=
,|=
,^=
,+=,等。。。
其他運算符
&
,*
與c/c++一致!
atest := 1 var ptr* int ptr = &atest println(ptr)
3.條件判斷
if else
語句
授權例子!!!
var pa int var pb int println("請輸入密碼: n") fmt.Scan(&pa) if pa == 123456 { println("用於獲取授權!") println("請輸入進門授權碼: n") fmt.Scan(&pb) if pb == 111 { println("成功!!!") } else { println("失敗!!!") } } else { println("非法入侵!!!") }
switch
語句
println("請輸入條件字符串:n") var ch string fmt.Scan(&ch) switch ch { case "a": println("輸入的是a!n") case "b": println("輸入的是b!n") case "c": println("輸入的是c!n") default: println("輸入無效!n") }