这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天
Go语言上手-基础语法
入门
开发环境
一、简介
- 高性能、高并发
- 语法简单、学习曲线平缓
- 丰富的标准库
- 完善的工具链
- 静态链接
- 快速编译
- 跨平台
- 垃圾回收
基础语法
- Hello Wrold
- 变量
- if else
- 循环
- switch
- 数组
- 切片
- map
- range
- 函数
- 指针
- 结构体
- 结构体方法
- 错误处理
标准库
- 字符串操作
- 字符串格式化
- JSON处理
- 时间处理
- 数字解析
- 进程信息
实战
猜谜游戏
这个游戏较为简单,就是利用随机种子生成一个随机数,每次读取输入内容与随机数进行比较,直到相等,需要注意读入字符串的处理
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.Trim(input, "\r\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
}
}
}
复制代码
命令行词典
命令行词典中,用到了许多的工具,JSON转换器等,非常地方便,实现起来轻松许多了
SOCKS5代理
SOCKS5 是一个代理协议,它在使用TCP/IP协议通讯的前端机器和服务器机器之间扮演一个中介角色,使得内部网中的前端机器变得能够访问Internet网中的服务器,或者使通讯更加安全。SOCKS5 服务器通过将前端发来的请求转发给真正的目标服务器, 模拟了一个前端的行为。在这里,前端和SOCKS5之间也是通过TCP/IP协议进行通讯,前端将原本要发送给真正服务器的请求发送给SOCKS5服务器,然后SOCKS5服务器将请求转发给真正的服务器。