Go语言初识 | 青训营笔记

66 阅读2分钟

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

安装

windows

  • 前往 go.dev/ 或者 go语言中文网 下载最新的go安装包,双击安装即可
  • (可选)代理配置
# 配置 GOPROXY 环境变量
$env:GOPROXY = "https://proxy.golang.com.cn,direct"
# 还可以设置不走 proxy 的私有仓库或组,多个用逗号相隔(可选)
$env:GOPRIVATE = "git.mycompany.com,github.com/my/private"

初识

  • Go语言是一门编译型语言
  • Go语言的编译速度很快
  • Go通过结构体和接口实现某些面向对象的特性
  • Go会自动格式化代码的风格
  • Go的创建协程很方便
  • Go通过channel来传递数据,而不是通过共享内存

Go的包与项目依赖

  • 最初的Go想要依赖其他代码需要将所有的代码放到项目目录下,这会导致项目代码与依赖代码混乱,而且不方便控制依赖包的版本。在1.11版本中,引入了包的概念,可以通过go.mod来引入包并控制包的版本,不需要将包的代码放在项目目录之下,强化了Go包的管理。
  • 每个项目中一个目录为一个包,其中main表明这个包会被编译成一个可执行程序

类型

类型长度(字节)默认值说明比较性
bool1false可比较
byte10uint8可比较
rune40Unicode Code Point, int32可比较
int, uint4或8032 或 64 位可比较
int8, uint810-128 ~ 127, 0 ~ 255,byte是uint8 的别名可比较
int16, uint1620-32768 ~ 32767, 0 ~ 65535可比较
int32, uint3240-21亿~ 21亿, 0 ~ 42亿,rune是int32 的别名可比较
int64, uint6480可比较
float3240.0可比较
float6480.0可比较
complex648可比较
complex12816可比较
uintptr4或8以存储指针的 uint32 或 uint64 整数可比较
array值类型不可比较
struct值类型取决于字段类型
string""UTF-8 字符串可比较
slicenil引用类型不可比较
mapnil引用类型,key必须可比较,如果想要使用不可比较需写转换函数不可比较
channelnil引用类型可比较
interfacenil接口可比较
functionnil函数不可比较
  • Go的语言类型很强,所有的转换都需要显示转换