GO语言工程实践课后作业|青训营

53 阅读2分钟

一、 猜谜游戏介绍 实现思路:1.首先我们要生成随机数(我们会发现随机生成的是同一个数字)这时候我们要使用用时间戳来初始化随机数种子 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) } 2.读取用户输入 fmt.Println("Please input your guess") reader :=bufo.NewReader(os.Stdin) input, err := reader.ReadString('\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) 3.实现判断逻辑 if guess > secretNumber { fmt.Println("Your guess is bigger than the secret number. p Please try again") } else if guess < secretNumber { fmt.Println("Your guess is smaller than the secret number. Please try again") } else { fmt.Println("Correct, yo u Legend!") } } 4.实现游戏循环 二、 在线词典介绍

  1. 抓包
  2. 代码生成
  3. 生成代码解读
  4. 生成request body
  5. 解析response body
  6. 打印结果
  7. 完善代码 01.首先我们了解一下并发VS并行(GO可以充分发挥多核优势,高效运行) 并发:多线程程序在一个核的CPU上运行 并行:多线程程序在多个核的CPU上运行 1.1Goroutine 协程:用户态,轻量级线程,栈KB级别 线程:内核态,线程跑多个协程,栈MB级别 快速打印goroutine lfunc hello(i int) { println("hello goroutine : " + fmt.Sprint(i))} func HelloGoRoutine((){ for i := 0; i < 5; i+ { go func(j int) { hello(j)}(i) time.Sleep(time.Second) 1.2CSP(提倡通过通信共享内存而不是通过共享内存而实现通信) 1.3 Channel make(chan 元素类型,[缓冲大小]) 无缓冲通道 make(chan int) 有缓冲通道 make(chan int,2) 2.1.1 GOPATH bin 项目编译的二进制文件 pkg 项目编译的中间产物,加速编译 src 项目源码 √ 项目代码直接依赖 src下的代码 go get 下载最新版本的包到 src 目录下 2.1.2 Go Vendor 项目目录下增加 vendor 文件,所有依赖包副本形式放在 ProjectRoot/vendor依赖寻址方式:vendor=>GOPATH通过每个项目引入一份依赖的副本,解决了多个项目需要同一个package依赖的冲突问题。2.1.3GoModule通过go.mod文件管理依赖包版本通过goget/gomod指令工具管理依赖包终极目标:定义版本规则和管理项目依赖关系2.2依赖管理三要素(1)配置文件,描述依赖go.mod(2)中心仓库管理依赖库Proxy(3)本地工具go/getmod2.3.1依赖配置version语义化版本ProjectRoot/vendor 依赖寻址方式:vendor =>GOPATH 通过每个项目引入一份依赖的副本, 解决了多个项目需要同一个 package 依赖的冲突问题。 2.1.3 Go Module ·通过 go.mod 文件管理依赖包版本 · 通过 go get/go mod 指令工具管理依赖包 终极目标:定义版本规则和管理项目依赖关系 2.2 依赖管理三要素 (1)配置文件,描述依赖 go.mod (2)中心仓库管理依赖库 Proxy (3)本地工具 go/get mod 2.3.1 依赖配置-version 语义化版本 {MAJOR}.MINOR.{MINOR}.{PATCH}