GO语言基础|青训营笔记

96 阅读1分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记

  • GO语言特点

    • 高性能,高并发
    • 语法简单,学习曲线平缓
    • 丰富的标准库
    • 完善的标准库
    • 静态链接
    • 快速编译
    • 跨平台
    • 垃圾回收

入门知识

  • 配置开发环境

  • 基础语法

  • 实战

    • 猜数游戏

      1. 生成随机数
      2. 用时间戳来初始化随机数种子
      3. 读取用户输入
      4. 实现判断逻辑
      5. 实现游戏循环
      package main
      
      import (
      	"bufio"
      	"fmt"
      	"math/rand"
      	"os"
      	"strconv"
      	"strings"
      	"time"
      	)
      
      func main() {
      	maxNum := 100
      	rand.Seed(time.Now().UnixNano())
      	secretNumber := rand.Intn(maxNum)
      	// fmt.Println("The secret number is ", secretNumber)
      	
      	fmt.Println("Please input your guess")
      	reader := bufio.NewReader(os.Stdin)
      	for {
      		input, err := reader.ReadString('\n')
      		if err != nil {
      			fmt.Println("An error occured while reading input. Please try again", err)
      			continue
      		}
      		input = strings.TrimSuffix(input, "\n")
      	
      		guess, err := strconv.Atoi(input)
      		if err != nil {
      			fmt.Println("Invalid input. Please enter an integer value")
      			continue
      		}
      		fmt.Println("You guess is", guess)
      		if guess > secretNumber {
      			fmt.Println("Your guess is bigger than the secret number. Please try again")
      		} else if guess < secretNumber {
      			fmt.Println("Your guess is smaller than the secret number. Please try again")
      		} else {
      			fmt.Println("Correct, you Legend!")
      			break
      		}
      	}
      }
      复制代码
      
  • 在线词典

    1. 抓包
    2. 代码生成
    3. 生成request body
    4. 解析response body
    5. 打印结果
    6. 完善代码
  • SOCKS5 代理

    • TCP echo server
    • auth
    • 请求阶段
    • relay阶段