学习Day1 Go基础 | 青训营

46 阅读2分钟
1.1什么是Go语言

1.高性能高并发
2.语法简单、学习曲线平缓
3.丰富的标准库
4.完善的工具链
5.静态链接
6.快速编译
7.跨平台
8.垃圾回收

1.2基础语法

定义变量xxx:=xxx会自动确定类型


if后面并不一定要加小括号但是必须直接大括号,不能写到同一行

for{
}//死循环

switch的case不用加break也不会进其他分支


var a [5]int//数组定义
b := [5]int{1,2,3,4,5}//数组长度固定

用make可以创建切片(长度不固定,用的较多)

s := make([]string,3)
s = append(s,"d")//必须赋值给原数组(因为容量不够的话会发生扩容并且返回新的指针)

map创建方法make( map [ key类型 ] value类型 )


range可以快速遍历
range遍历对于数组会返回两个值,第一个是索引,第二个是对应位置的值,如果不需要索引可以用_忽略
range遍历对于map会返回键值对


函数定义func 函数名(参数名 类型,...) 返回值类型,...{},支持返回多个值
实际业务中返回多个值,第一个为结果,第二个为错误信息


结构体定义
type 结构体名称 struct{字段名 字段类型}


结构体方法
func(xxx 结构体类型) 方法名(参数名 参数类型) 返回值类型{}


go里面使用单个的返回值来处理错误信息

func findUser(users []user,name string)(v *user,err error){
    return nil,errors.New("错误信息")
}

字符串操作,strings包
Contains判断一个字符串是否包含另一个字符串
Count统计字符串中出现另一个字符串的数量
Index查找某个字符串位置
Join连接多个字符串
Repeat重复字符串


json操作
保证结构体每个字段首字母大写(公开字段)
用json.Marshal就能序列化
json.Unmarshal反序列化
默认序列化成的字段首字母是大写的,如果需要小写就在结构体字段后面加json:"小写的字段名"


time.Now()可以获取当前时间
time.Date(2021,11,1,3,24,56,0,time.UTC)构建一个时间
时间格式化必须用"2006-01-02 15:04:05"
t.Unix()可以获取时间戳


strconv包可以解析字符串