运行命令 go run xx.go
或者 go build xx.go + ./xx
package main
import (
"fmt"
)
func main() {
fmt.Println("hello world")
}
?
基础语法
package main
import (
"fmt"
"math"
)
func main() {
var a = "ivanlee"
var b, c int = 1, 2
var d = true
var e float64
f := float32(e)
g := a + "_regina"
fmt.Println(a, b, c, d, e, f)
fmt.Println("g=", g)
const s string = "constant"
const h = 50000000
const i = 3e20 / h
fmt.Println(s, h, i, math.Sin(i))
}
- 定义变量可分为:var+变量定义,变量 :=
- 定义常量时没有类型限制,其可根据上下文自行进行定义
?
if/else
func main() {
if 7%2 == 0 {
fmt.Println("7%2==0")
} else {
fmt.Println("7%2!=0")
}
if num := 9; num < 0 {
fmt.Println("num < 0")
} else if num < 10 {
fmt.Println("0<num<10")
} else {
fmt.Println("num>10")
}
}
if 条件当中的语句不需要加括号,也可以在if当中添加变量的定义
for循环
go语言当中只有for循环,没有while循环
func main() {
var i int = 1
for {
fmt.Println("loop")
i = i + 1
if i == 3 {
break
}
}
for n := 1; n < 9; n++ {
if n%2 == 0 {
continue
}
fmt.Println("n=",n)
}
for i <= 5 {
fmt.Println("i=", i)
i = i + 1
}
}
如果for循环当中没有条件,则相当于python里面的while True
,内部没有break则会一直执行
也可以像C++语法中的正常三个条件值进行编写,也可以提前定义变量以后进行范围操作,这一步也类似于while i<=5
。
switch
func main() {
a := 2
switch a {
case 1:
fmt.Println("a=1")
case 2:
fmt.Println("a=2")
case 3, 4, 5:
fmt.Println("a=3 or 4 or 5")
default:
fmt.Println("other")
}
t := time.Now()
switch {
case t.Hour() < 12:
fmt.Println("morning")
default:
fmt.Println("afternoon")
}
}
switch分支语句的用法中可以使用任意类型的变量,也可以在case语句当中使用,并且当case被命中之后,会直接跳出当前switch,运行后面的语句
数组
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 c [2][3]int
for i := 0; i < 2; i++ {
for j := 0; j < 3; j++ {
c[i][j] = i + j
}
}
fmt.Println("2d: ", c)
定义数组时,大小必须是固定的,所以数组也并不常用。所以一般使用 切片技术,这样也就更像python的数组
s := make([]string, 3)
s[0] = "a"
s[1] = "b"
fmt.Println(s)
fmt.Println(len(s))
s = append(s, "c")
s = append(s, "d", "f")
fmt.Println(s)
c := make([]string, len(s))
copy(c, s)
fmt.Println(c)
fmt.Println(c[2:5])
fmt.Println(c[:5])
fmt.Println(c[2:])
good := []string{"g", "o", "o", "d"}
fmt.Println(good)
map
m := make(map[string]int)
m["one"] = 1
m["two"] = 2
fmt.Println(m)
fmt.Println(m["one"])
fmt.Println(m["regina"]) //没有key时会输出0
value, ok := m["regina"]
fmt.Println(value, ok)
delete(m, "two")
m2 := map[string]int{"three": 3, "four": 4}
var m3 = map[string]int{"five": 5, "six": 6}
fmt.Println(m2, m3)
make函数就是只用于定义,如果要赋值则直接在后面用{}进行赋值
map更像python里面的字典,可以用delete函数删除key,如果map里面没有key,则会有一个false值
range
n := []int{1,2,3,4,5}
sum := 0
for i, num := range n {
sum += num
if num == 2 {
fmt.Println("index:", i, " num:", num)
}
}
m := map[string]string{"a": "A", "b": "B"}
for k, v := range m {
fmt.Println("key:&q