这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
变量定义
- 可以使用var定义变量,如:
var a = "initial"
var e float64 //默认值为0
var p = float32(2)
- 可以使用 := 方法定义
f := float32(e)
j := 1
- 可以使用const定义常量
const s string = "constant"
for
for {
fmt.Println("loop")
}//死循环
for j := 7; j < 9; j++ {
fmt.Println(j)
}//一般循环
if
if不需要加括号
if 8%4 == 0 {
fmt.Println("8 is divisible by 4")
}
Switch
- go中的switch和c中的不同,当进入到case之后,尽管没有break,也不会继续执行下面的case
a := 1
switch a {
case 1:
fmt.Println("one")//不会执行case 2
case 2:
fmt.Println("two")
- 可以不用在case后面写变量,在case中直接写表达式即可
t := time.Now()
switch {
case t.Hour() < 12:
fmt.Println("It's before noon")
default:
fmt.Println("It's after noon")
}
array
定义
var a [5]int //一维数组定义
var twoD [2][3]int //二维数组定义
b := [5]int{1, 2, 3, 4, 5} //赋初值定义
slice(切片)
定义
s := make([]string, 3) //方法1
var s = make([]string,3) //方法2
赋值方法
s[0] = "a"
s = append(s, "d")
使用切片方法取值
//s = {"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]
map
go中的map是随机存储的 没有顺序
定义
m := make(map[string]int)
//map[索引类型]值类型
m2 := map[string]int{"one": 1, "two": 2} //赋值定义1
var m3 = map[string]int{"one": 1, "two": 2} //赋值定义2
赋值
m["one"] = 1
可以返回两个值,第一个为值,第二个为该项是否存在(bool)
r, ok := m["unknow"]
fmt.Println(r, ok) // 0 false
删除
delete(m, "one")
range
nums := []int{2, 3, 4}
for i, num := range nums {
if num == 2 {
fmt.Println("index:", i, "num:", num) // index: 0 num: 2
}
}
m := map[string]string{"a": "A", "b": "B"}
for k, v := range m {
fmt.Println(k, v) // b 8; a A
}
for k := range m { // 单独只有一个 是key
fmt.Println("key", k) // key a; key b
}
函数
func add(a int, b int) int {
return a + b
}
//利用指针 改变原来值
//原来值+2
func add2ptr(n *int) {
*n += 2
}
//一个函数可以返回多个值
//func 函数名称(函数参数及其类型)(函数返回类型)
func exists(m map[string]string, k string) (v string, ok bool) {
v, ok = m[k]
return v, ok
}
结构体
定义
type user struct {
name string
password string
}
赋值
a := user{name: "wang", password: "1024"}
b := user{"wang", "1024"}
c := user{name: "wang"}//此时c的password为空字符串
//也可以通过.的形式赋值
var d user
d.name = "wang"
d.password = "1024"
与函数结合
//func (结构体) 函数名(函数参数及其类型)(函数返回类型)
func (u user) checkPassword(password string) bool {
return u.password == password
}
func main() {
a := user{name: "wang", password: "1024"}
fmt.Println(a.checkPassword("2048")) // true
}
异常处理
通过函数的多个返回结合if来进行错误捕捉