基础语法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