go语言基础语法分析 | 青训营

59 阅读4分钟

Go语言简介

Go语言的语法相较于c语言来说,Go语言是从零开始的,没有历史源头的一种新型开发语言,是在不断吸取众多先前语言的经验教训后,从源头开始重新规划的一种规则严谨、条理简单的语言,它其中没有变异用法,任何人写出来的代码都基本一致,所以相较于其他语言Go语言简单易学,也同时具有了更好的维护性,这对于很多项目的开发是有很大的优点的也不断增强了项目的完成效率。

基础语法

接下来我们从最基础的语法讲起

  • 简单输出hello world。输出hello world是我们学每一种计算机语言最先学会的语法,简单的一句hello world其中也是凸显出了这门语言的一些简单的知识点,比如下面这句
func main() {
	fmt.Println("hello world")
}

它就向我们展现了这门Go语言的主要输出函数是由func main(){}而构成,而它的输出方式为fmt.Println(),这也是Go语言不同于其他计算机语言的一个特色点,而每一门语言也有他们自己的特色点,就比如其中c的输出方式为printf()

  • 定义变量。对于其他语言来说,Go语言也有自己的定义变量方法。
  var a ="initial"
  var b,c int =1,2
  var d=ture
  var e float64
  f := float32(e)
  g := a+"foo"

在赋值时,c语言是直接使用=对其赋值,而Go语言是使用:=对其中的变量进行赋值操作,其中的方式还是有很多相似的点,而不同的点也有很多,比如:在定义整数型变量时,c语言中是直接选择了int a=0;这样一个“变量类型 变量=所要赋的值;”的格式去定义变量,而Go语言选择的是“var 变量 int = 所要赋的值”的格式去定义,其中还有个很需要注意的点就在于c语言中每个语句都需要使用;对其进行定义格式,但是Go语言对这方面的要求则没有那么高。而Go语言定义一个常数还需要使用const s string = "constant"的方式。

  • if-else语句。很多的计算机语言都包含着if-else语言,但是Go语言其中的if-else语法相较于其他语言也有一些不同的地方,比如在Go语言中if后面是没有小括号的,只有大括号相邻。
if num:=9;num<0{
		fmt.Println(num,"is negative")
	}else if num < 10{
		fmt.Println(num,"has 1 digit")
	}else {
		fmt.Println(num,"has multiple digits")
	}

在这其中也可以看出,在Go语言中可以在if语句中给变量赋值,然后在对其进行if判断,其他的语法也和其他计算机语言相同,都是使用“if-else if-else”的结构。

  • 循环。在Go语言中没有while循环没有do while循环,只有for 循环。
for n :=0; n<5;n++{
    if n%2==0{
        continue
    }
    fmt.Println(n)
}

其中for循环中for语句后的三段都可以任意省略,不影响正常运行。

  • switch-case选择。相较于C、C++来说,Go语言中的一个区别在于switch后没有括号,而最大的区别则是c++中若switch-case中不加break,会继续其他的case分支,在golong中默认是不需要加的。

golong中的switch功能更加强大可以使用任意地变量类型,比如字符串,结构体,甚至可以取代任意的if-else语句,可以在switch后加任意的变量,然后再case中实现分支,这样的代码相对于使用多个if-else代码更加的清晰易懂。

  • 数组。其中Go语言中的数组定义方式为var a [5]int,而这个的意思是存放5个数组元素的数组a,其中的给数组元素赋值的方式和c++还是相同的都是a[1]=100的形式。

  • 切片。Go语言中的切片是使用make函数来创建的,而要给切片中的不同元素赋值则又跟数组赋值相同,而在数组中添加元素的方式也和其他计算机语言的方式相同,都是使用append函数的方式对数组元素进行添加对于数组元素的访问也可以使用s[: ]的切片方式。对于字符型的切片创建和整数型也是不一样的,需要使用good :=[]string{"g","o","o","d"}的方式对其进行创建。

  s := make([]string,3)  
  s[0] ="a"
  s[1] ="b"
  s[2] ="c"
  
  s =append(s,"d")
  s =append(s,"e","f")
  fmt.Println(s)
  
  c := make([]string, len(s))
  copy(c,s)
  fmt.Println(c)
  
  fmt.Println(s[2:5])
  fmt.Println(s[:5])
  
  good :=[]string{"g","o","o","d"}
  fmt.Println(good)

总结

以上所说的语法都是一些Go语言中最简单的语法,也可以说是Go语言中语法的冰山一角,对于Go语言语法的正式学习还需要系统学习。