经过昨天第一遍笔记的洗礼,感觉今天的笔记也要注意观看感受了,不然和大佬们的笔记天差地别,成为不了大佬,也要向大佬看齐。
上一章笔记中我记录了Go语言的一些性质与前面的几个让我一看就知道的基础语法,这一章中我将介绍下面的基础语法,这些语法说实话我有的学过,有的根本没见过,初学者的我也有一定的学习难度,学习东西很多,我不可能每一个知识点都记录下来,下面我就按我的节奏进行记录。
基础知识
切片
- 切片可以说是一个可以任意改变长度的数组,可以随时更改长度,用make生成切片,用append去追加元素
s := make([]string, 3) //创建切片
s[0] = "a"
s[1] = "b"
s[2] = "c"
fmt.Println("get:", s[2])
fmt.Println("len:", len(s))
- 使用make创建生成切片
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]
- 可以使用append追加元素,用copy复制元素
函数
- 函数在众多语言中都是重中之重,go语言也不例外。
- go语言中使用关键字func进行定义声明
- go语言中的变量类型是后置的
- go语言中支持返回多个值,且实际业务代码中几乎都是多个值
package main
import (
"fmt"
)
func add(a int, b int) int {
return a + b
}
func add2(a, b int) int {
return a + b
}
func exits(m map[string]string, k string) (v string, ok bool) {
v, ok = m[k]
return v, ok
}
func main() {
res := add(1, 2)
fmt.Println(res)
v, ok := exits(map[string]string{"a": "A"}, "a")
fmt.Println(v, ok)
}
指针
- 与C/C++等老牌语言相比,go中的指针支持的操作非常有限
- 主要用途就是对传入的参数进行修改,修改代码如下所示
package main
import "fmt"
func add2(n int) {
n += 2
}//修改操作失败
func add2ptr(n *int) {
*n += 2
}//修改操作成功
func main() {
n := 5
add2(n)
fmt.Println(n)//5
add2ptr(&n)
fmt.Println(n)//7
}
结构体
- 结构体就是一种带类型的字段的集合,如下就是定义了两种字段(name/passward)的结构体,并且可是使用[.结构体名字]进行读取和写入结构体中的内容
- 结构体最前方是使用type关键字定义结构体类型,使用关键字struct进行初始化结构体变量
type user struct {
name string
password string
}
错误处理
- 在go语言中的习惯的使用一个单独的返回值来返回错误信息
- 在函数的返回值中加一个error,就代表这个函数中可能返回错误
- 通常使用if err != nil语句来进行错误处理判断,并且进行相关的处理
package main
import (
"errors"
"fmt"
)
type user struct {
name string
password string
}
func findUser(users []user, name string) (v *user, err error) {
for _, u := range users {
if u.name == name {
return &u, nil
}
}
return nil, errors.New("not found")
}
func main() {
u, err := findUser([]user{{"wang", "1024"}}, "wang")
if err != nil {
fmt.Println(err)
return
}
fmt.Println(u.name)
if u, err := findUser([]user{{"wang", "1024"}}, "li"); err != nil {
fmt.Println(err)
return
} else {
fmt.Println(u.name)
}
}
小结
第二天笔记小结,说实话不知道这个笔记什么时候能完善结束,视频中的老师每一部分大多数都是提了一些关键点,但是对于初学者来说并没有那么简单,反正对我来说,看完还是不会写,可能学习就是不能靠一个30分钟的视频就会敲了,需要后面的课程一起去学习,等我学习的东西足够多了,就能从量变到质变,真正学会吧。