Golang 基础语法

变量 & 数据类型

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