Go基础语法总结(一) | 青训营

67 阅读2分钟

字节跳动青训营笔记

Go上手

特点

  1. 高性能、高并发
  2. 语法简单、学习曲线平缓
  3. STL丰富
  4. 工具链完善
  5. 静态链接
  6. 编译快速
  7. 跨平台
  8. 垃圾回收

字节跳动全面Go原因

  1. 最初Python,由于性能原因转Go
  2. Cpp不太适合在线Web业务
  3. 早期团队非Java背景
  4. 性能较好
  5. 部署简单,学习成本低
  6. 内部RPC和HTTP框架推广

配置Go碰到的问题

  • 按照教程先在Go官网下载Go安装程序,然后VSCode安装Go插件。外部终端中使用go version可以弹出版本信息,但VSCode中内部终端无法识别Go命令,编译运行均失败。网络查找资料发现,将VSCode用管理员权限启动即可,问题解决

  • Go tools安装失败,查找资料发现可能是代理问题(然而我明明挂着梯子),试着照着资料更改代理,重新尝试下载,成功解决。

其他问题

  • 使用Git clone课程示例代码时Git报错:Recv failure: Connection was reset,经查资料发现是代理问题,但是关闭代理也未能解决。通过两条Git命令重置代理,再使用cmd命令ipconfig/flushdns配置ip刷新dns缓存之后,再进行clone代码便成功解决 git config --global --unset http.proxy git config --global --unset https.proxy

Go语法基础

整体仍与C、Python等有较多互通之处,熟悉习惯一下格式即可,按照示例代码即查即用感觉会更方便快速一些,故只挑部分内容记录

  • go run xxx.go直接运行该Go程序

  • go build xxx.go编译该Go程序为exe,再配合./直接运行

  • 声明变量var,常量const,可以直接赋值而不用指定类型,会自动匹配

  • if后无圆括号,但必须有花括号

  • Go无while,只有for,一样无圆括号,省略内容即为死循环,需要什么条件直接添加即可

  • Switch后变量也无圆括号,且不同于C不需要每个case手动加break,会自动break

  • Switch变量可以是任意类型,也可以留空在case注明,比多个if-else直观

  • var a [5] int``var two [2][3]int 声明数组

  • 数组不可变长,实际业务使用slice-切片更多(实际就是简易可变长数组)

s := make([]string, 3)
s = append(s, "d")
c := make([]string, len(s))
copy(c, s)

m := make(map[string]int) 声明map

  • 用range遍历slice和map更简洁

函数指针等其它Go基础内容将为Go基础语法总结第二部分