青训营day1 go语言基础| 青训营笔记

94 阅读3分钟

这是我参与「第五届青训营」伴学笔记创作活动的第1天

一、本堂课重点内容

  • go的安装、基础语法
  • 案例实战:猜谜游戏,在线词典,SOCKS5代理

二、详细知识点介绍

1 go简介

  • go语言是Google开发的开源编程语言,诞生于2006年1月2日下午15点4分5秒,于2009年11月开源,2012年发布go稳定版。Go语言在多核并发上拥有原生的设计优势,Go语言从底层原生支持并发。
  • go语言具有高性能、高并发,语法精炼,快速编译,跨平台,垃圾回收等特点
  • 字节早期使用的是python,由于遇到了性能上的问题,转而使用go语言

2 go基础

2.1 开发环境

  • 安装go:到go的官网下载安装包 image.png
  • 配置系统环境(我使用的是windows)
    • GOPATH,存放go项目的目录(由于gomod的出现已经很少使用),GOPATH下有三个子目录pkg,src,bin
    • GOROOT,go的安装根目录
    • path,将go中bin的全路径加入windows环境变量path中
  • 编辑器:vscode、goLand

2.2 基础语法

  • 变量
    • 与java语言不同,go语言可以自动判定类型
    • 变量的生成方式主要有两种
      • 例1:var a = 1
      • 例2: a := 1 (这种用法只能在函数内部使用,要注意)
  • if else
    • go中的if省略括号更简洁
    • 同时由于go没有三目运算符"a > b ? a : b",这里要用if...else替代
  • 循环
    • go中只有for一个循环语句
    for a := 0; a < 10; a++ {}
    for a < b {}
  • switch
    • Golang switch 分支表达式可以是任意类型,不限于常量。可省略 break,默认自动终止。
  • 数组
    • 在go中数组的传递为值传递,如果要在不同函数中修改同一个数组,要使用指针作为形参
  • 切片
    • 切片是数组的一个引用,因此切片是引用类型。但自身是结构体,值拷贝传递。
    • 切片的长度可以改变,因此,切片是一个可变的数组。
    • 切片中没有直接删除的函数,要使用拼接巧妙删除
  • map
    • map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用
  • 函数
    • go中的函数可以返回多个参数
    • 支持命名返回参数
    • 支持匿名函数和闭包
  • 结构体
    • 结构体是值类型
    • 结构体有自己的方法
    • 结构体指针访问结构体的属性和方法与使用结构体变量相同

三、实践练习例子:猜谜游戏

image.png

四、课后个人总结

今天主要是学了go的基本语法,由于内容较多,还需要时间消化,在第二部分猜谜游戏,在线词典,SOCKS5代理这些案例中,有非常多值得学习的地方,例如每个函数调用之后都要对err进行处理,给出详细的err解释以便于在后期出错时,及时排查。

五、引用参考