文章目录

  • 走进Go语言基础语言
    • 2.2基础语言-变量
    • 2.3基础语法- if else
    • 2.4基础语法-循环
    • 基础语法-switch
    • 基础语法-数组
    • 基础语法-切片
    • 基础语法-map
    • 基础语法-range
    • 基础语法-函数
    • 基础语法-指针
    • 基础语法-结构体
    • 基础语法-结构体方法
    • 基础语法-错误处理
    • 基础语法-字符串操作
    • 基础语法-字符串格式化
    • 基础语法-JSON操作
    • 基础语法-时间处理
    • 基础语法-字符串和数字的转化
    • 基础语法-进程信息
  • 实战案例
    • 猜数字游戏
    • 命令行词典
    • socks5代理介绍

走进Go语言基础语言

2.2基础语言-变量


golang的常量可以没有确定的类型,可以根据上下文来自动确定类型。

2.3基础语法- if else


if后面必须直接跟大括号

2.4基础语法-循环


for 里面的三段任意一段都能省略。

基础语法-switch


golang默认是不需要加break的,而且golang可以使用任意的变量类型,甚至可以取代任意if,else语句

基础语法-数组

基础语法-切片


append追加如果越界就会扩容并放回一个新的切片,因此要赋值回去,可以用copy来拷贝,还有像python一样的切片操作,不支持负数索引。

基础语法-map


在获取value时可以加个ok来获取这个map里面到底有没有这个key存在,遍历时是随机顺序。

基础语法-range


range遍历数组时会返回两个值,第一个值是索引,第二个值是值,如果不想要索引,可以用下划线去复位

基础语法-函数


golang函数可以支持返回多个值,在一般业务中,用第一个值返回真正的值,第二个值返回ok。

基础语法-指针


golang的指针主要用于传参。

基础语法-结构体


为初始化的值都是空值

基础语法-结构体方法


将(u user)提前,带指针的话就能修改结构体

基础语法-错误处理


golang异常用err如果正常的话就返回结构和nil,异常就返回nil和异常的信息,然后主函数判断异常,golang的异常感觉比java要简单很多。

基础语法-字符串操作

对于中文,一个中文对应多个字符。

基础语法-字符串格式化

基础语法-JSON操作


对于结构体我们只要保证每一个字段是大写就可以利用json.Marshal()来获得序列化后的字符串,要用string强制类型转化后的打印,我们可以定义一个变量b然后可以利用json.Unmarshal(buf,&b)反序列化到b,
如果需要小写下划线风格的json数据,那么可以在字段后面把字段名称改为小写。

基础语法-时间处理


需要格式时间的话不像java用的什么HH:mm:ss而是一个固定的时间,这个时间是写在官方文档上的。
同样可以用time.Parse来解析时间,用time.Unix()来获取一个时间戳。

基础语法-字符串和数字的转化


放在strconv包里面,参数一就是目标字段,参数个就是转化为多少进制,参数三表示是多少位的,可以用Rtoi把数字转为字符串。

基础语法-进程信息


用os.Getenv来获取环境变量,下面是设置环境变量,然后可以用exec.Command来启动进程并且获取输入输出。

实战案例

猜数字游戏

package mainimport ("bufio""fmt""math/rand""os""strconv""strings""time"
)func main() {maxNum := 100rand.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}}
}

命令行词典


彩虹翻译链接

代码生成链接


http.NewRequest的data参数是一个流,因为放在内存里面可能会导致发送请求会有很大内存
因为resp.response也是一个流,为了避免内存泄露,因此会加上defer 来关闭这个流,这个会从函数结束之后从下往上运行。
由于data是写死的所以我们要改变一下、

这两个data有区别,因为json.Marshal得到的是一个byte数组,因此我们用btyes.NewReader

type DictResponse struct {Rc   int `json:"rc"`Wiki struct {KnownInLaguages int `json:"known_in_laguages"`Description     struct {Source string      `json:"source"`Target interface{} `json:"target"`} `json:"description"`ID   string `json:"id"`Item struct {Source string `json:"source"`Target string `json:"target"`} `json:"item"`ImageURL  string `json:"image_url"`IsSubject string `json:"is_subject"`Sitelink  string `json:"sitelink"`} `json:"wiki"`Dictionary struct {Prons struct {EnUs string `json:"en-us"`En   string `json:"en"`} `json:"prons"`Explanations []string      `json:"explanations"`Synonym      []string      `json:"synonym"`Antonym      []string      `json:"antonym"`WqxExample   [][]string    `json:"wqx_example"`Entry        string        `json:"entry"`Type         string        `json:"type"`Related      []interface{} `json:"related"`Source       string        `json:"source"`} `json:"dictionary"`
}

JSOn转化

 bodyText, err := ioutil.ReadAll(resp.Body)if err != nil {log.Fatal(err)}var dictResponse DictResponseerr = json.Unmarshal(bodyText, &dictResponse)if err != nil {log.Fatal(err)}fmt.Printf("%#v\n", dictResponse)

这样我们就利用json的反序列化得到了这个结构体然后打印。
打印结果

bodyText, err := ioutil.ReadAll(resp.Body)if err != nil {log.Fatal(err)}if resp.StatusCode != 200 {log.Fatal("bad StatusCode:", resp.StatusCode, "body", string(bodyText))}var dictResponse DictResponseerr = json.Unmarshal(bodyText, &dictResponse)if err != nil {log.Fatal(err)}fmt.Println(word, "UK:", dictResponse.Dictionary.Prons.En, "US:", dictResponse.Dictionary.Prons.EnUs)for _, item := range dictResponse.Dictionary.Explanations {fmt.Println(item)}

主函数

判断Args是不是两个不是就打印错误然后提取我们的word然后查询。

socks5代理介绍




首先开放一个端口,然后让这个端口去接受请求。在process方法中,bufio.NewReader返回的是一个带缓冲的流,读第一个字节的时候会可能会把后面1kb的字节都读完,如果你下次要读999个字节这样就能瞬间返回,这样效率比较高效。
使用nc命令建立Tcp连接,这个命令是linux下的命令,如果想要在windows下使用该命令,可以参考这篇文章
nc命令

看这个认证,第一阶段浏览器会给代理服务器发送一个报文,这个包括三个字段,然后我们就读出这三个字段,最后我们要返回版本号和鉴权方式.


字节青训营Go语言学习第一天--基础语言+实战案例相关推荐

  1. 三个小项目入门Go语言|字节青训营笔记

    前言 这是青训营的第一课,今天的课程比较快速的讲解了go语言的入门,并配合三个小的项目实践梳理所学知识点,这里详细回顾一下这三个项目,结合课后作业要求做一些代码补充,并附上自己的分析,青训期间的所有课 ...

  2. 字节青训营第三课之高质量编程与性能调优实战的笔记和总结

    这是字节青训营第三课:高质量编程与性能调优实战的笔记和总结 概要 准备 尝试使用 test 命令,编写并运行简单测试 尝试使用 -bench参数,对函数进行性能测试 推荐阅读Go代码Review建议. ...

  3. 字节青训营第一课之go语言入门的笔记和总结

    有幸参加了字节跳动举办的青训营活动,主要是go语言的编程实践,我将会整理课程的笔记和总结,欢迎关注! 1Go语言简介 由于Go语言有语法简单.高性能等特点,因此国内外各大公司如谷歌.腾讯.字节等都在使 ...

  4. 字节青训营抖音APP

    You just work hard, the rest is up to time GitHub地址:https://github.com/xiaodainiao/TikTokLite TikTok ...

  5. 第五届字节跳动青训营 前端进阶学习笔记(八)React框架入门

    文章目录 前言 React 的设计思路 1.传统JavaScript更新UI的痛点 2.我们对UI代码的需求 3.组件 (1)组件定义 (2)组件设计 (3)组件结构 4.React的生命周期 Rea ...

  6. 字节青训营第十三课之深入浅出RPC框架的笔记与总结.md

    基本概念 本地函数调用 函数调用完整过程如图,藏实际上编译器经常优化,参数和返回值少时直接将其存在寄存器,不需操作栈,直接online不需call: 将a和b的值入栈 经函数指针找到calculate ...

  7. 存储与数据库 | 字节青训营笔记

    目录 一.存储系统 1.什么是存储系统 2.存储系统的特点 3.RAID技术 RAID出现的背景 RAID 0 RAID 1 RAID 0+1 二.数据库 1.难道数据库和存储系统不一样吗 2.数据库 ...

  8. 【字节青训营】微服务架构原理核心服务治理与具体实践

    1.微服务架构介绍 1.1系统架构的演进历史 1.单体架构 2.垂直应用架构 按照业务线垂直划分 3.分布式架构 抽出与业务无关的公共模块 4.SOA架构 面向服务 5.微服务架构 彻底的服务化 5. ...

  9. 【字节青训营】Day1 HTML+CSS笔记

    一.HTML HTML传达内容,而不传达样式! 1.定义 HTML 指的是超文本标记语言 (Hyper Text Markup Language),是一种用于创建网页的标准标记语言. 语义化:HTML ...

最新文章

  1. python123数字形式转换_【Python系统学习02】数据类型与类型转换
  2. 项目十大管理及5大过程组概览
  3. 三个值得期待的JavaScript新功能!
  4. java 根据类名示例化类_Java类类getProtectionDomain()方法及示例
  5. 华为正式发布鸿蒙多久可以用,华为正式发布鸿蒙OS,手机随时能用
  6. uboot主Makefile分析
  7. [BZOJ4873][六省联考2017]寿司餐厅(最大权闭合子图)
  8. DataSet 用法
  9. 解决向日葵解锁密码忘记的问题,HKEY_LOCAL_MACHINE\SOFTWARE \Oray\SunLogin下没有\Oray\SunLogin目录
  10. 人工智能挑战教师角色独特性 与教育教学融合显现独特优势
  11. BLE Mesh中的Sequence number和IV Index
  12. Redis最大内存配置
  13. 机器学习实战——xgboost股票close预测
  14. 网上报名考试管理系统-功能齐全安全稳定-简单易用-系统试用免费
  15. 程序复杂性度量方法-McCabe
  16. css字号 h5_你应该知道的CSS文字大小单位PX、EM、PT
  17. ibatis mysql存储过程_分步详解 如何在iBatis中调用存储过程
  18. 腾讯云服务器5M带宽的实际下载/上传速度是多少?
  19. 物联网漏洞挖掘入门--DLINK-DIR-645路由器栈溢出漏洞分析复现
  20. 黄金K线图经典图解之“五毛”

热门文章

  1. 以获客为目标 ,如何从0到1实现用户增长?
  2. 用python3爬取百度首页
  3. 511遇见易语言递归寻找文件及枚举子目录
  4. PCL实现选框裁剪点云
  5. 电路邱关源学习笔记——1.1电路模型
  6. 特南鲍姆编著经典教材《COMPUTER NERWORKS》翻译
  7. 电路串联和并联图解_串并联电路的识别方法图解
  8. 年度十大金融投资书籍
  9. Java实现2+22+222+2222+22222
  10. 多级放大电路超详细分析