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

73 阅读1分钟

GO语言实战案例

猜字谜 - 生成随机数

下面这个是我仿照老师上课讲的,写的生成随机数的代码如下:

image.png 执行的效果如下图:

image.png

而且每次执行都是这一个数字,那怎么才能改变呢:需要加上rand.Seed这个代码使用初始化时间戳来解决这问题

image.png 输出结果第一次为:

image.png 输出结果第二次为:

image.png

到这里其实我们就完成了生成随机数的代码的实现

猜字谜 - 读取用户信息

下面的代码就是需要用户输入一个数字和随机生成的一个数据比较看

image.png

image.png

下面是运行结果这里是我输入了一个数字12,随机数生成的是52

image.png

猜字谜 - 实现判断逻辑

整体的代码如下:

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 sec ret 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)
      return
         continue
      }
      input = strings.TrimSuffix(input,"\n")
      guess,err := strconv.Atoi(input)
      if err != nil{
         fmt.Println("Invalid input.Please enter on integer value")
      return
         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
      }
   }
}

实现结果截图如下: image.png

SOCKS5 代理介绍

image.png

image.png

SOCKS5 代理 - 原理

image.png

SOCKS5 代理 - TCP echo server

image.png

SOCKS5 代理 - auth

image.png

SOCKS5 代理 - 请求阶段

image.png

SOCKS5 代理 - relay阶段

image.png

课程总结

介绍了go语言进阶的一些语法,总的来说上课的感受还是比较好的,从猜字谜到在线词典到SOCKS代理的一些介绍,对以后学习这块的知识打下了基础。