Go语言上手-基础语法 | 青训营笔记

40 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 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服务器将请求转发给真正的服务器。