一、基础语法
1、Hello World
package main
import (
"fmt"
)
func main() {
fmt.Println("Hello World!")
}
2、变量
package main
import (
"fmt"
"math"
)
func main() {
// Go语言里面声明变量有两种方式:
// 方式一:var 变量名 (数据类型)可以自动推断数据类型
var a = "initial"
var b, c int = 1, 2
var d = true
var e float64
// 方式二:用冒等号
f := float32(e)
g := a + "foo" //Go语言里面字符串是内置类型,所以直接用加号连接
fmt.Println(a, b, c, d, e, f)
fmt.Println(g)
// 声明常量的话就是把var改成const即可
// 值得一提的是,golang里面的常量没有确定的类型,它是根据上下文来自动确定类型
const s string = "constant"
const h = 50000000
const i = 3e20 / h
fmt.Println(s, h, i, math.Sin(h), math.Sin(i))
}
3、if - else
package main
import "fmt"
func main() {
/*
1、if后不用括号,就算加了括号,编辑器也会自动给它去掉
2、if后的大括号要紧跟其后
*/
if 7%2 == 0 {
fmt.Println("7 is even")
} else {
fmt.Println("7 is odd")
}
}
4、循环
package main
import "fmt"
func main() {
// golang里面的循环只有for循环,没有while和do while
i := 1
// 死循环
for {
fmt.Println("loop")
break
}
for j := 1; j <= 9; j++ {
fmt.Println(j)
}
for i <= 3 {
fmt.Println(i)
i = i + 1
}
}
5、switch
package main
import (
"fmt"
"time"
)
func main() {
a := 2
/*
switch 后面的变量不用加括号
golang里面的switch不用加break,执行完某一个case就自动跳出
相比于C/C++,golang里面的switch更加强大,可以使用任意变量类型,比如:字符串、结构体等。甚至可以用来取代任意的if-else语句
*/
switch a {
case 1:
fmt.Println("one")
case 2:
fmt.Println("two")
case 3:
fmt.Println("three")
case 4, 5:
fmt.Println("fout or five")
default:
fmt.Println("other")
}
t := time.Now()
/*
可以不用书写变量,直接在case里面书写条件分支,这样的代码,会比多个if-else语句嵌套更加清晰易懂
*/
switch {
case t.Hour() < 12:
fmt.Println("It's before noon")
default:
fmt.Println("It's after noon")
}
}
6、数组
package main
import "fmt"
func main() {
// 实际场景中很少用数组,因为它的长度是固定的
var a [5]int
a[4] = 100
fmt.Println(a[4], len(a))
b := [5]int{1, 2, 3, 4, 5}
fmt.Println(b)
var twoD [2][3]int
for i := 0; i < 2; i++ {
for j := 0; j < 3; j++ {
twoD[i][j] = i + j
}
}
fmt.Println("2d: ", twoD)
}