这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记
1.go语言特点:
- 静态链接:blog.csdn.net/songjinshi/… 全部拷贝一份 会变得很大
- 垃圾回收:类似与java的自动回收机制
- 跨平台:linux,ios,路由器,树莓派上都可以跑
2.基础语法
2.1 hello world
package main -- 该文件属于main包
import(
"fmt" -- 标准库里的一个包,负责输入输出字符串 格式化字符串
)
func main(){
fmt.Println("hello world!")
}
2.2 变量
方式1:var a (string可省略) = "initial" 方式2:a := "initial"
2.3 常量
const a (string可省略) = "initial"
2.4 if else
tips:
1.else必须跟在括号后面
2.条件里不用加括号
eg. if 7%2 == 0 {
xxxx
} else {
xxxx
}
2.5 for循环
for i := 0; j <= 5; j++{
xx
}
2.6 switch
a:=2
switch a{
case 1:
xxxx
case 2:
xxxx
default:
xxxx
}
2.7数组
长度固定,因此很少用
var a [5]int
a[4] = 100
len(a)
2.8 切片
方式1:s := make([]type,len)
方式2:s := []string{"g","o","o","d"}
s := make([]string,3)
扩展长度:
s=append(s,"d","f")
2.9 map
m:=make(map[string]int) m["one"] = 1
2.10 range
对于一个map或者slice,可用range来进行快速遍历
对于map:
for k,v := range m{
xxxx
}
对于slice:
for i,num := range nums{
xxxx
}
也可以仅仅 index 或者 key
2.11 函数
变量类型后置
一般都返回两个值,一个结果,一个错误信息
2.12 指针
func add(n *int) {}
2.13 结构体
type user struct{
name string
password string
}
实例化:a := user{name:"wang",password:"1234"}
或者先初始化再 a.name a.password
2.14 结构体方法
func (u user) checkPaassword(password string) bool(这个是返回值类型){}
func (u *user) checkPaassword(password string) {} -- 右指针可以对结构体进行修改
2.15 错误处理
如果出现错误,返回nil和error 否则返回原本的结果和nil
import{
"errors"
}
2.16 字符串操作
是否包含某个字母,拼接,拆分等等...
2.17 字符串格式化
fmt.Printf("s=%v\n",s)
用v来代表所有,不用区分
+v,#v可以打印更加详细的信息
2.18 Json处理
只要保证结构体里的每个字段第一个字母是大写,就可以直接用JSON.Marchaler去序列化成一个json字符串(用unmachaler反序列化)
名字可以修改
type userInfo struct{
Name string
Age int 'json:"age"'
Hobby []string
}
2.19 时间处理
now.Unix获得时间戳
time.Now获取当前时间
2.20 数字解析
import{
"strconv"
}
f,_ := strconv.ParseFloat("1.234",64)
2.21 进程信息
用os.Args来得到程序执行时的制定命令行参数
3.实战
3.1猜谜游戏
3.1.1读取用户输入
3.1.2用时间戳来初始化随机数种子!
rand.Seed(time.Now().UnixNano())
secretNumber := rand.Intn(maxNum)
3.1.3循环
3.2 在线词典
3.2.1 request body fanyi.caiyunapp 随便搜一个 copy as cUrl 得到一大串json
3.2.2 然后打开curlconverter.com/#go
3.2.3 reponse body json转struct oktools.net/json2go