这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
1.输出"Hello World!"
package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}
首先定义包名,声明该程序属于main包,再使用“import”导入fmt库,调用fmt包下的Println函数进行打印。
2.声明变量
package main
import (
"fmt"
"math"
)
func main() {
var a = "initial"
var b, c int = 1, 2
var d = true
var e float64
f := float32(e)
g := a + "foo"
fmt.Println(a, b, c, d, e, f) // initial 1 2 true 0 0
fmt.Println(g) // initialapple
const s string = "constant"
const h = 500000000
const i = 3e20 / h
fmt.Println(s, h, i, math.Sin(h), math.Sin(i))
}
第一种,指定变量类型,如果没有初始化,则变量默认为零值。 第二种,根据值自行判定变量类型。 第三种,使用 := 赋值操作符 另:用const定义常量
3.slice
Go中的slice依赖于数组,它的底层就是数组,所以数组具有的优点,slice都有。且slice支持可以通过append向slice中追加元素,长度不够时会动态扩展,通过再次slice切片,可以得到得到更小的slice结构,可以迭代、遍历等。
以下代码为slice的详细使用方式:
package main
import "fmt"
func main() {
s := make([]string, 3)
s[0] = "a"
s[1] = "b"
s[2] = "c"
fmt.Println("get:", s[2]) // c
fmt.Println("len:", len(s)) // 3
s = append(s, "d")
s = append(s, "e", "f")
fmt.Println(s) // [a b c d e f]
c := make([]string, len(s))
copy(c, s)
fmt.Println(c) // [a b c d e f]
fmt.Println(s[2:5]) // [c d e]
fmt.Println(s[:5]) // [a b c d e]
fmt.Println(s[2:]) // [c d e f]
good := []string{"g", "o", "o", "d"}
fmt.Println(good) // [g o o d]
}
代码中首先使用make初始化一个切片,之后将其赋值,并使用append演示slice尾插元素功能,copy是将slice直接复制的函数。
4.map
map 是 key-value 数据结构,又称为字段数组或者关联数组。
package main
import "fmt"
func main() {
m := make(map[string]int)
m["one"] = 1
m["two"] = 2
fmt.Println(m) // map[one:1 two:2]
fmt.Println(len(m)) // 2
fmt.Println(m["one"]) // 1
fmt.Println(m["unknow"]) // 0
r, ok := m["unknow"]
fmt.Println(r, ok) // 0 false
delete(m, "one")
m2 := map[string]int{"one": 1, "two": 2}
var m3 = map[string]int{"one": 1, "two": 2}
fmt.Println(m2, m3)
}
注意: 1。map 在使用前一定要 make。
2.map 的 key 不能重复,如果重复了,则以最后这个 key-value 为准。
3.map 的 value 是可以相同的。
4.map 的 key-value 是无序。