一、基础语法
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)
}
golang cmd 说明
gofmt格式化代码go run编译并直接运行程序,它会产生一个临时文件(但不会生成 .exe 文件),直接在命令行输出程序执行结果go build用于测试编译,检查编译阶段的错误,若为main.go则生成可执行二进制文件go build -race go test -race提供一种竞争检测机制go install1.将包导入后编译。2.若为可执行文件放入Bin目录下,若为程序放入pkg下go doc|godoc -http=:6000- go doc package function 查询src下的代码注解
- godoc -http=:6000 通过web界面访问
go env go语言环境配置信息
go slice
make([]type,len,cap)其中len最好指定为0len() cap()返回切片的存储数据个数与容量append(slice,不定长参数…)append(slice1,slice2)cope(dis,src)会更具最小的确定
go map
make(map[type]type,cap)delete(map,key)value , ok := map[key]