如何学习Go语言?《Go in action(语言实战)》总结笔记

由于工作需要从java 转 go,不得不重新学习,网上有一些在线教程,适合快速入门但是细节太多不易抓住重点和主线,如果需要深入了解语言特性和语言使用场景,推荐大家看一看《Go in action(语言实战)》,书中第一章用一个RSS匹配器的微型程序非常巧妙的融合了Go语言的核心内容。

一、为什么用GO?

开发速度、天然并发、类型系统、内存管理。

二、包和命令

包:package
引入包:import “_" 空白标识符可以绕开import必须使用标识符限制
初始化:所有init 函数在main函数前执行
常用命令:
go build 执行编译,windows生成xxx.exe,linux 生成 xxx 文件
go run 编译并执行
go fmt 提交仓库前格式化源代码
go vet 代码异常检查
go doc 生成代码文档

三、重点数据结构

1. 数组

内存连续、需要指定长度

//声明整型数组,默认‘零’值
var array [5] int  

//声明并初始化整形数组
array := [5] int {
    10, 20, 30, 40, 50 }

//声明一个指针数组
array := [5] *int {
    }

2. 切片 - 动态数组

类似java中 StringBuilder,可自动增长缩小,由一个包含指针、长度(len)、容量(cap)的切片结构和底层值数组构成。切片做函数传参只需要复制切片结构(8*3共24个字节)

//声明整形和字符串切片
slice := make([]int, 3, 5)  // 3长度,5容量
slice := make([]string, 5, 10)  // 5长度,10容量

//增长
newSlice := append(slice, 50) // 全新的底层数组,1000容量以内翻倍,超过后增增长因子为1.25

//追加
append(s1, s2...) // ...运算符,切片s2 所有值追加都 s1 中

//迭代, 注意迭代中的 value 是值副本
for index, value := range slice {
   
	slice[index] ++ 
}

3. 映射

类似java中HashMap

//声明k/v映射
dict := make(map[string] string)

//声明并初始化映射
dict := map[string] string{
    "Red":"1""Orange":"2"}

//申明一个使用字符串切片作为值的映射
dict := map[int] []string {
   } 

//查找映射
value, exists := colors["Blue"]

//迭代映射
for key, value := range colors {
   
}

//删除映射
delete
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值