打卡day01 部分Go基础知识 | 青训营

79 阅读3分钟

Go语言基础知识

1.常见变量类型:  字符串、整数、浮点型、布尔型。Go语言中字符串为内置类型,可以直接"+"号拼接,可以使用"="比较两个字符串
2.常量:  在Go中的常量没有确定的类型,根据上下文自动而定
3.if-else语句:  if后面没有小括号,必须跟大括号
4.循环:  只有for循环
5.switch分支结构:  switch后的变量名不需要括号,case了一个后,即使没有break,也会默认跳出;switch的可以是字符串、结构体等任意类型,功能较C++更强大;同时case的可以是if-else表达式 6.数组:  业务中很少用,因为长度固定
7.切片:  可变长度的数组。使用make创造,使用append可以任意时刻更改长度

s := make([]string,3) //创建切片
s = append(s,"d") //增加

8.map:  遍历时,随机的顺序访问;.ok用来判定某个键是否有对应的值存储

m := make(map[string]int) //创建map,这里的键为string类型,值为int类型

9.range快速遍历:  返回第一个值为索引、第二个值为对应位置的值

func main(){
    nums := []int{2, 3, 4}
    sum := 0
    for i, num := range nums {
        sum += sum
        if num == 2 {
            fmt.Println("index:",i,"num:",num) //此处输出为index: 0 num: 2 
        }
    }
    fmt.Println(sum) //此处输出sum为9
}

10.函数:  变量类型后置,支持返回多个值;一般业务中返回两个值,第一个为真值结果,第二个为错误信息

func exists(m map[string]string, k string) (v string, ok bool){
    v, ok = m[k]
    return v,ok
} //判断map中是否存在指定名称的键值对

11.指针:  此处指针功能有限,不如C/C++中的指针,常用操作为对变量类型进行修改
12.结构体:  和C/C++中较为类似
13.结构体方法:  在func后加上(结构体变量名 结构体名称)成为成员函数

func (u user) checkPassword(password string) bool {
    return u.password == password
}

14.错误处理:  相较于java的try-catch,Go中可以用if-else清楚的知道错误出现在哪个函数;用返回值来传递错误信息,返回原本的值;nil是预定义的一个标识符,表示没有错误信息发生,非nil则表示有错误信息
15.字符串操作:  包含在strings标准库中。Contains判断一个字符串是否包含另一个字符串,Count计数,HasPrefix是否以某字符串开头,HasSuffix是否以某字符串结尾,Index返回字符串中包含另一指定字符串的索引,Join连接多个字符串,Repeat重复字符串,Replace替换字符串,ToLower转小写,ToUpper转大写
16.字符串格式化:  类似于C语言中的printf,但是只用v%就可以打印任意类型的变量,%+v打印详细结果(字段名字和值),%#v更详细(结构体类型名称、字段和值)
17.JSON处理:  对于一个已有的结构体,保证每个字段第一个字母为大写,这个结构体就能用JSON.Marshaler去序列化,变成一个JSON的字符串;JSON.Unmarshal反序列化
18.时间处理:  time.now()获取当前时间;time.Unix()获取时间戳
19.数字解析:  在strconv包中;可用Prase,也可用Atoi把字符串转为数字,itoA把数字转为字符串;输入不合法返回err