变量 & 数据类型
1.学会定义变量
// 先声明,后赋值
var age int
age = 18
// 声明并赋值,这里并没有声明数据类型,这样会根据数据而推导类型
var age = 18
// 简短格式(省略掉var和数据类型)
age := 18
2.学会销毁变量
// golang 似乎没有删除变量的语法
// 并且声明变量后不使用是会报错编译不了的,不过可以使用 _ 语法解决这个问题
var name string
_ = name
3.学会判断变量是否存在
// golang是否没有像PHP那种isset判断,有对值的一个判断 IsNil,IsValid,
// 如果要强行判断我想包在异常中应该可以,如果报错就是没有这个变量
4.知晓数据类型及怎么定义
/*
整型(有符号范围值是无符号的正负一半)
uint8 = 0-255
uint16 = 0-65535
uint32 = 0-42e8+
uint64 = 0-18e18+
浮点型
float32
float64
complex64
complex128
字符串类型(string)
布尔类型(bool)
其他数字类型
byte(应该是字节类型,类似于uint8,因为一个字节等于8位)
rune(类似于 int32)
uint(32 或 64位)
int(32 或 64位)
uintptr(无符号整型,存放一个指针)
*/
// todo
var variable1,variable2,variable3 int
5.学会判断变量的数据类型
// 可以使用 字符串格式化 返回
fmt.Sprintf("%T", variable)
// 可以使用放射
reflect.TypeOf(test).String()
字符串
1.字符串长度
// 长度可以使用len函数获取,不过有个问题3个字母的长度=3,而一个中文字符就=3,可以使用下面方法解决
// 使用utf8 rune来统计,utf8需要导入 unicode/utf8
utf8.RuneCountInString(variable)
// 转成rune数组类型后使用len统计
str := "哈哈哈hhh"
strCount := []rune(str)
len(strCount)
2.字符串中是否存在某个字符/字符串
// 需要导入 strings 返回字符串所在位置,没有的话返回-1
strings.Index(variable, "str")
3.字符串截取
// 字符串截取可以使用 str[1:] 语法
3.字符串拆分/合并
// 估计很多字符串相关的操作应该都在strings里面,后面再看看文档
// 拆分
strSplit := strings.Split(str, ",")
// 合并
str := strings.Join(strSplit, " ")
时间
1.获取时间戳
timestamp := time.Now().Unix()
2.时间戳和字符串互转
// 时间戳转字符串
time := time.Unix(timestamp, 0).Format("2006-01-02 15:04:05")
// 字符串转时间戳
timeFormat := "2006-01-02 15:04:05"
currentTime := "2008-08-08 08:08:08"
location, _ := time.LoadLocation("Local")
theTime,_ := time.ParseInLocation(timeFormat, currentTime, location)
fmt.Println(theTime.Unix())
3.时间加减
// todo
分支结构
1.熟悉分支结构语法(如某语言没有括号)
// 条件语句有 if,switch,select 不过switch默认是自带break的,若要继续执行下一个case可以加fallthrough
// 循环语句仅 for 一个语法,for有好几种写法,可以替代while使用
for init;condition;post {}
for condition {}
for key,value := range oldMap {}
2.熟悉分支结构及与其他语言区别(可能有新增或者丢弃某种分支结构)
// todo
基本函数 & 文件 & 网络 & 数据库
1.熟悉常用函数
2.熟悉文件及目录的操作
3.GET/POST请求操作(如判断当前请求类型,及接受参数)
4.上传及获取网络文件
5.数据库的CRUD