Go基础语法学习
1.基础变量赋值
- 两种申明变量的方式:
- var name 类型 = 值
- name := 值 这种就会根据值去自动推导类型
-
运算符优先级 类似于C或者C++
-
常量类型 将var改成const const name string = 或者const name =
package main import ( "fmt" "math" ) func main() { var a = "intitial" var b, c int = 1, 2 //var只是申明一个变量我们可以在变量后面限制其类型 var d bool = true var e float64 //默认为0 f := float32(e) //强制类型转化 g := a + " foo" fmt.Println(a, b, c, d, e, f) fmt.Println(g) const s string = "constant" //常量 const h = 50000000 const i = 3e20 / h fmt.Println(s, h, i, math.Sin(h), math.Sin(i)) }
2.控制语句
2.1 if else
- if else 语句
- if else 中不像C++中一样,没有小括号()
- if else 中无论什么情况都必须加上{}
在c++中可以
if (7 % 2 == 0) return 1;在go中必须为if 7 % 2 == 0 {return 1}
2.2 switch
Switch使用方法 switch使用方法与case有几个不同
- c++中如果在case中不加上break,就会把几个case都遍历了,而go不同
- c++中case的变量限定类型有限,例如字符类型或者整数类型,而go不限制任何类型,甚至可以不加变量 如果判断条件比较多的话,写switch可能比if else更加的清晰
2.3 循环
Go的 for 循环类似于C,但却不尽相同。它统一了 for 和 while,不再有 do-while 了。它有三种形式,但只有一种需要分号。
- for要么什么都不写类似于
for {}, 这就是死循环, 用break或者continue可以解掉循环 - 要么都写上
for ; ; {}, 且对于循环变量初始化得用申明变量name :=值不能用var name 变量类型 := 值
package main
import "fmt"
func main() {
// 循环
// 在go中没有while循环, do while循环只有for循环
// for要么什么都不写类似于for {}, 这就是死循环, 用break或者continue可以解掉循环
// 要么都写上for ; ; {}, 且对于循环变量初始化得用申明变量 name := 值不能用var name 变量类型 := 值
i := 1
for ; i <= 3; i++ {
fmt.Println(i)
}
fmt.Println("Ops this new style of for loop")
for i = 0; i <= 3; {
fmt.Println(i)
i = i + 1
}
for {
fmt.Println("loop")
break
}
for n := 0; n < 5; n++ {
if n%2 == 0 {
fmt.Println(n, "is even")
} else {
fmt.Println(n, "is odd")
}
}
}