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