GO语言的实战案例 | 青训营笔记

59 阅读1分钟

前言

GO语言的学习必然需要实战实践,巩固技能

课程目录

  • 猜谜游戏
  • 在线词典
  • SOCKS5代理

主要内容

猜谜游戏

[游戏介绍]

系统随机生成一个数,通过输入数,系统判断输入的数正确与否

[生成随机数]

package main

import (
    "fmt" 
    "math/rand"
    )

func main(){
    maxnum := 100
    secretnumber := rand.Intn(maxnum)
    fmt.Println("The secret number is ", secretnumber)
}

[生成随机数V2]

package main
import (
    "fmt"
    "math/rand"
    "time"
)
func main {
maxNum := 100
rand.Seed(time.Now(.UnixNano()secretNumber := rand.Intn(maxNum)
fmt.Println("The secret number is ", secretNumber)
}

[读取用户输入]

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)
input, err := reader.fteadString("\n')//读取一行输入
if err != nil {
    fmt.Println("An error occured while reading input. Please try again",err)
    return
 }
input = strings.TrimSuffix(input, "n")//去掉换行符

guess,err := strconv.Atoi(input)//转换成数字
if err != nil {
    fmt.Println("Invalid input. Please enter an integer value")
    return
 }
fmt.Println("You guess is",guess)

}

[实现判断逻辑]

image.png

[实现游戏循环]

image.png

在线词典

[抓包]

fanyi.caiyunapp.com/

image.png

[代码生成]

image.png image.png

创建请求的data是一个流

生成代码解读

image.png

[生成request body]

image.png

[解析 response body]

image.png

oktools.net/json2go

[打印结果]

源代码:hi-hi.cn/go

image.png

SOCKS5代理

[SOCKS5介绍]

SOCKS5是明文传输,方便过防火墙访问

image.png

[原理]

image.png

[TCP echo server]

image.png

实现发送回复

[auth]

image.png

[请求阶段]

image.png

得到url等

[relay阶段]

image.png

利用TCP协议建立连接

image.png image.png

浏览器里测试代理