后端与 Go | 青训营笔记

27 阅读2分钟

这是我参与「第五届青训营 」笔记创作活动的第1天。

今天开启了我go语言的“hello world”。昨天上课之前配置好环境装好goland,今天正式开始学习go。

  • go是强类型语言,每一个变量都有自己的变量类型
  • 字符串、整数、浮点型、布尔型
  • 字符串是内置类型,+ 拼接 , =判断是否相等
  • 常量 没有确定类型 根据上下文自动确定类型
  • if后面必须直接跟大括号
  • switch后面可以不加变量,在case里判断
  • go是参数类型后置
  • 第一个值是真实返回值,第二个值是错误信息
  • 指针常用用途:对传入的参数进行修改
  • 中文一个字符长度为3
  • %v 标准化输出,不区分数字和字符串,需要\n换行
  • %+v详细的信息:字段名+值
  • %#v更详细的信息:结构体类型名称+字段+值
  • %.2f保留两位小数,需要\n换行
  • bufio.NewReader把stdin转成只读流
  • 通过时间戳生成随机数种子

String用法:

func main() {
   a := "hello"
   fmt.Println(strings.Contains(a, "ll"))                // true
   fmt.Println(strings.Count(a, "l"))                    // 2
   fmt.Println(strings.HasPrefix(a, "he"))               // true 前缀
   fmt.Println(strings.HasSuffix(a, "llo"))              // true 后缀
   fmt.Println(strings.Index(a, "ll"))                   // 2 下标
   fmt.Println(strings.Join([]string{"he", "llo"}, "-")) // he-llo 拼接
   fmt.Println(strings.Repeat(a, 2))                     // hellohello 重复
   fmt.Println(strings.Replace(a, "e", "E", -1))         // hEllo 替换
   fmt.Println(strings.Split("a-b-c", "-"))              // [a b c] 分割
   fmt.Println(strings.ToLower(a))                       // hello 小写
   fmt.Println(strings.ToUpper(a))                       // HELLO 大写
   fmt.Println(len(a))                                   // 5 长度
   b := "你好"
   fmt.Println(len(b)) // 6 中文一个字符长度为3
}

简单字典:

  • 输入网址:fanyi.caiyunapp.com/#/
  • 右键“检查”
  • 输入good 点翻译
  • 点击network,找到dict的请求,Request Method:POST
  • 右键Copy as cURL(bash) 用git打开
  • 输入网址:curlconverter.com/go/ 处理request
  • 粘贴刚刚的curl请求,转换成go语言
  • 输入网址:oktools.net/json2go
  • 把浏览器中的Preview复制,点击“转换-嵌套” 生成对应的结构体。
  • 然后看代码v4
  • 用命令行执行v4

socks5代理:

执行go文件:go run proxy/v4/main.go 在git输入:curl --socks5 127.0.0.1:1080 -v www.baidu.com (-v代表打印请求过程所有细节)