Go语言基础语法1|青训营

86 阅读1分钟

基础语法1

Hello World!

package main
import (
    "fmt"
)
func main(){
    fmt.Println("Hello World!")
}

与C/C++不同,go文件开头需要声明入口文件,在上述代码中声明了main包为入口包,即该文件下程序为main包的一部分。而后才是与C/C++ “#include<>” 类似的导入库操作,在go文件中导入了“fmt”包。接下来是main函数,其中调用了fmt包中函数,可以发现fmt包主要起着格式化输入输出的作用。 从上述代码中可以总结出该go文件的语言结构,有以下部分:

  • 包声明
  • 引入包
  • 函数

运算符

运算符优先级与C/C++类似

变量与常量

Go语言是强类型语言。 Go语言按类别划分有以下几种数据类型:

  • bool(布尔型)
  • 数字类型 --整型int --浮点型float32、float64
  • 字符串类型
  • 其他派生类型

对于强类型和弱类型语言,个人更喜欢强类型语言,强类型语言尽管在速度上不如弱类型语言,但强类型带来的严谨性使得程序更加安全。弱类型语言如js在编写代码过程中很容易因为类型而导致编写随意,使得后续在复审中花费更多的时间。ts作为静态类型也是为了解决这个毛病。

变量声明

  • 使用var关键字声明变量,会自动推导类型

var a = "Hello"

  • 显式声明变量类型

var a string = "Hello"

var f float64

  • 使用 := 声明变量

b := 123

常量声明

  • 使用const关键字声明常量

显式类型定义const s string = "World"

隐式类型定义const s = "World"

if else

if 520 % 99 == 0 {
    fmt.Println("You love me")
} else {
    fmt.Println("I love you")
}

与C/C++区别在于,if后面的条件不需要添加小括号,但必须添加大括号,大括号中语句不得与if在同一行。虽然但是,C/C++中我也不习惯将语句写在同一行,个人觉得这极其影响程序的可读性。

for循环

go语言中没有while、do while循环,仅有for循环

for {
    fmt.Println("Loop")
    break
}
for j := 5; j > 0; j-- {  
    fmt.Printf("%d\n", j)  
}
i:=1
for i<5 {
    fmt.Printf("%d", i)
    i++
}

由上述代码可以看出在Go语言中尽管没有while等其他循环结构,但是for循环已经提供了while循环的功能。在学习C/C++的时候我就发现while循环有时挺鸡肋的明明可以全部使用for循环实现,在Go语言中验证了我的想法。

switch

a := 2
switch a {
case 1:
	fmt.Println("one")
case 2:
	fmt.Println("two")
default:
	fmt.Println("other")
}

除了swtich与C/C++的区别在于,在Go语言中的switch不需要在每个case后添加break语句,默认仅执行一段case。那么有时确实需要执行下一条case呢该如何编写。此处提到fallthrough,fallthrough会强制执行后面的case语句,且不判断下一条语句表达式结果是否为true。 同时,在Go语言中case后接表达式可以很好地替代多重if-else if