特点
- 1.高性能、高并发
- 2.语法简单、学习曲线平缓
- 3.丰富的标准库
- 4.完善的工具链
- 5.静态链接
- 6.快速编译
- 7.跨平台
- 8.垃圾回收
语法
变量、常量
-
变量声明和初始化:
goCopy code var a = "initial"var关键字用于声明一个变量。- 变量的类型可以通过初始化值来推断,因此这里没有显式指定类型。
- 这里的变量
a被初始化为字符串"initial"。
-
多变量声明和初始化:
goCopy code var b, c int = 1, 2- 在一行上,你可以声明并初始化多个变量。
- 这里的变量
b和c被初始化为整数1和2。
-
简短变量声明:
goCopy code d := true- 简短变量声明使用
:=来声明并初始化变量,Go会自动推断变量的类型。 - 这里的变量
d被初始化为布尔值true。
- 简短变量声明使用
-
零值初始化:
goCopy code var e float64- 当一个变量被声明而没有被显式初始化时,它将被初始化为其类型的零值。对于
float64类型,零值为0.0。
- 当一个变量被声明而没有被显式初始化时,它将被初始化为其类型的零值。对于
-
类型转换:
goCopy code f := float32(e)- Go中的类型转换需要显式声明类型。这里将
e(float64类型)转换为float32类型。
- Go中的类型转换需要显式声明类型。这里将
-
字符串拼接:
goCopy code g := a + "foo"- 字符串可以使用
+运算符进行拼接。 - 这里将变量
a和字符串"foo"拼接成字符串"g"。
- 字符串可以使用
-
常量声明:
goCopy code const s string = "constant" const h = 500000000 const i = 3e20 / hconst关键字用于声明常量。- 常量可以是字符串、数值等。
i被初始化为数学表达式的结果,表达式使用了h。
-
使用标准库函数:
goCopy code fmt.Println(a, b, c, d, e, f) fmt.Println(g) fmt.Println(s, h, i, math.Sin(h), math.Sin(i))fmt.Println()函数用于格式化输出内容到标准输出。
与C++相比,Go语言在变量声明、初始化和类型推断上有一些不同之处。例如,Go在变量声明时允许使用:=进行简短变量声明,且类型可以根据初始化值进行推断,这减少了重复的类型信息。
循环
-
无限循环:
goCopy code i := 1 for { fmt.Println("loop") break }- 在Go语言中,你可以使用
for {}语法创建一个无限循环。 - 通过
break语句来终止循环,这样它只会执行一次。
- 在Go语言中,你可以使用
-
基本循环:
goCopy code for j := 7; j < 9; j++ { fmt.Println(j) }- 这是一个常见的
for循环,具有初始化、条件和递增语句。 - 它会输出7和8,因为循环在
j小于9时执行。
- 这是一个常见的
-
跳过循环迭代:
goCopy code for n := 0; n < 5; n++ { if n%2 == 0 { continue } fmt.Println(n) }- 使用
continue语句可以跳过当前循环迭代,继续下一次迭代。 - 在这个例子中,只有当
n为奇数时,才会输出n的值。
- 使用
-
循环条件:
goCopy code for i <= 3 { fmt.Println(i) i = i + 1 }- 在循环中,你可以使用一个简化的形式,只使用循环条件来控制循环。
- 这个循环会输出1、2、3,然后停止。
总结与比较:
- 在Go中,循环的基本结构与C++相似,但有一些细微差异,比如初始化变量的位置,以及
for {}形式的无限循环。 - Go中的
continue语句和C++中的类似,用于跳过当前迭代。 - Go语言中没有像C++中的
while循环,但你可以通过只使用条件来模拟。