左手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")  }