基础-学习Go语言

1. 每个 Go 程序都是由包构成的。
2. 程序从 main 包开始运行。
3. 本程序通过导入路径 “fmt” 和 “math/rand” 来使用这两个包。
4. 按照约定,包名与导入路径的最后一个元素一致。例如,”math/rand” 包中的源码均以 package rand 语句开始。

导出名

1. 在 Go 中,如果一个名字以大写字母开头,那么它就是已导出的。例如,Pizza 就是个已导出名,Pi 也同样,它导出自 math 包。
2. pizza 和 pi 并未以大写字母开头,所以它们是未导出的。
3. 在导入一个包时,你只能引用其中已导出的名字。任何“未导出”的名字在该包外均无法访问。

函数

1. 函数可以没有参数或接受多个参数。
2. 在本例中,add 接受两个 int 类型的参数。
3. 注意类型在变量名 之后。
4. 当连续两个或多个函数的已命名形参类型相同时,除最后一个类型以外,其它都可以省略。

多值返回

1. 函数可以返回任意数量的返回值。

命名返回值

1. Go 的返回值可被命名,它们会被视作定义在函数顶部的变量。
2. 返回值的名称应当具有一定的意义,它可以作为文档使用。
3. 没有参数的 return 语句返回已命名的返回值。也就是 直接 返回。
4. 直接返回语句应当仅用在下面这样的短函数中。在长的函数中它们会影响代码的可读性。

变量

变量的初始化

1. var 语句用于声明一个变量列表,跟函数的参数列表一样,类型在最后。就像在这个例子中看到的一样,var 语句可以出现在包或函数级别。
2. 变量声明可以包含初始值,每个变量对应一个。如果初始化值已存在,则可以省略类型;变量会从初始值中获得类型。

短变量声明

1. 在函数中,简洁赋值语句 := 可在类型明确的地方代替 var 声明。函数外的每个语句都必须以关键字开始(var, func 等等),因此 := 结构不能在函数外使用。

基本类型

Go 的基本类型有

bool

string

int int8 int16 int32 int64
uint uint8 uint16 uint32 uint64 uintptr

byte // uint8 的别名

rune // int32 的别名
// 表示一个 Unicode 码点

float32 float64

complex64 complex128

1. 本例展示了几种类型的变量。 同导入语句一样,变量声明也可以“分组”成一个语法块。
2. int, uint 和 uintptr 在 32 位系统上通常为 32 位宽,在 64 位系统上则为 64 位宽。 当你需要一个整数值时应使用 int 类型,除非你有特殊的理由使用固定大小或无符号的整数类型。

零值

1. 没有明确初始值的变量声明会被赋予它们的 零值。

零值是:

– 数值类型为 0,
– 布尔类型为 false,
– 字符串为 “”(空字符串)。

类型转换

1. 表达式 T(v) 将值 v 转换为类型 T。
2. Go 在不同类型的项之间赋值时需要显式转换。

类型推导

1. 在声明一个变量而不指定其类型时(即使用不带类型的 := 语法或 var = 表达式语法),变量的类型由右值推导得出。
2. 不过当右边包含未指明类型的数值常量时,新变量的类型就可能是 int, float64 或 complex128了,这取决于常量的精度:

常量

1. 常量的声明与变量类似,只不过是使用 const 关键字。
2. 常量可以是字符、字符串、布尔值或数值。
3. 常量不能用 := 语法声明。

数值常量

1. 数值常量是高精度的 值。
2. 一个未指定类型的常量由上下文来决定其类型。
3. 再尝试一下输出 needInt(Big) 吧。

参考链接

1. Go指南中文版

是时候离开了

天有不测风云,人有旦夕祸福。

黑天鹅

当我听到这个消息,自己是非常沮丧的,在公司做了这么久,付出这么多,但结果确实非常令人不甘心。我甚至还写一篇”黑天鹅“的文章来安慰自己,然而并没有什么卵用。
在公司工作了四年,并没有像小说里的情形,事业走上人生巅峰,迎娶白富美。把自己的时间和注意力放在工作上,得到的回报,却是这样的结局。自己心里也无法接受这样的结局,但现实是残酷的。付出的与收获不成正比,这才是你的不甘心,对自己的沉没成本不甘心。我甚至安慰自己:
1. 这家公司是你自己选择的,自己自愿加入的。
2. 这个老板是你选择的。
3. 这个时间也是你选择自愿付出。自愿放弃陪家人的时间去加班,去写代码。

但我心情并没有好起来。有时候对超出自己能力之外的事,感到无奈。

公告

病来如山倒,病去如抽丝。

当更新了公告后,就等于向全部人宣布,你已经失败了,过去做的事情的价值,已经不复存在,过去的信任不复存在。理想中技术的价值观是,尝试运用技术改变世界,或者运用技术在更大比例上让世界变得更美好,但现在所做的事让很多人的生活变得更不好。
现在做的事情,并没有让事情变得简单,没有让生活变得更美好,反而让整个事件变得很复杂。

每个人都会有生活成本。离开是为了更好的生活。

贵人

在公司,我遇到过很多贵人,从做技术到技术管理,见证了4年来的成长。
龙哥,是我的第一个导师,第一次面试我,引导我进入了公司,在一起3年见证了公司飞速发展。
春哥,我的同事,一起工作了很久,在重大项目上线前,在自身离职的情况下,依然来公司帮忙处理事情,这也是让我感动的地方。
兵哥,技术大神,一起帮忙解决定位很多Bug,有些事情现在想起来,有些后怕。
还有Hyper,我的领导,相信我,让我负责团队的技术管理,让我和团队一起成长。
还有很多很多,这样的同事,这样的事。谢谢你们,大家一起曾经为了同一个目标奋斗,一起成长。
这4年来,成长收获满满。希望在成长的路上,会遇到更多和你们一样的贵人。

感悟

这是一次失败的练习。大多数人都会遇到过这一类事情。关键是看你自己如何做选择。

就好比你在德州扑克时候,手上拿着最强手牌AA,人家手拿高牌27跟进来了,然后flop就中了27两对,刀光剑影,你被KO了。人生有很多不确定的东西,跟德州类似。失望和希望并存,只要你还在桌子,就会有机会。

在微信的同事标签里,这一辈子的职业生涯中,认识3/4的同事,都是这家公司。如果说七年是一辈子的话,那么这一辈子就结束了。在这一辈子,我遇到了我的很多同事,收获了很多的成长,总结了很多的教训,也写了很多的bug。遇到很多的贵人,经历很多的事,是不可能再遇到的,像这样的,这是属于自己独一无二的经历。这就是你的收获,这就是你的成长。这辈子收获的经验,可以是你下辈子开始的基础。

人生的道路不可能是一帆风顺,一路平坦的。有时候,你会遇到下坡路,可以利用重力加速度让你加速前行。有时候,你也会遇到上坡路。
遇到“上坡路”,你怎么办?
如何突破限制你的“重力加速度”?
如何去做选择?
时间是雕刻刀,也是杀猪刀,看你怎么用它。时间会证明一切。这些都是我们人生中会遇到的问题。人生就是看你如何选择,如何努力,如何践行。
那么到了你自己做选择的时候了,如果你遇到了“上坡路”,应该怎么走?

新的征程

接下来,还有会有很多的有意义的事情,还会遇到更多的贵人,学习成长,尝试新的技术,当初定下的目标,是否实现了呢?

是时候离开了

你应该拥有的最重要的能力-读后感

在上一篇文章里,我学习到了多维竞争:
1. 生活是具有多个维度的;
2. 在多个维度打造竞争力;
3. 至少在一个维度上足够突出。

编程

我认为自己在编程这块元认知能力更强。

如果自己在遇到bug了,会冷静的分析原因。首先从自身的原因开始查找,一步一步按照业务逻辑去分析,将整个逻辑在脑海过一遍:
1. 自己是如何实现的?
2. 代码是怎么执行的?
3. 是否添加更多的日志?
4. 修复完bug后是否可以添加更多单元测试?

如果同事遇到了Bug,一定要淡定。其实写bug的人,肯定是认知不够,导致部分业务逻辑,没有考虑到。如果一味责怪他人的话,程序员自己也会很内疚,进而对修复问题也会造成影响。因为是技术Leader的关系,遇到bug后,正确的做法,一起分析问题时,不带有情绪去分析问题,而是一起查找问题产生的原因,一起分析解决问题的方法,让同事明白问题产生的根本原因。元认知的能力让我明白,责怪他人,语气带有情绪的话,是没有办法处理好问题,应该寻找一个彻底解决问题的办法。

潘多拉的盒子

元认知能力,其实对自己来讲,和潘多拉的盒子一样。打开这个盒子后,明白元认知的工作方式,你再也不可能回到过去的运行方式。特别是针对自己成长的事情,需要运用元认知能力来分析问题。

在生气的时候,要运用元认知能力,去分析自己的生气的原因以及如何避免。这样,你在生气和你知道自己在生气,就是对问题的两个不同的态度。在情绪低落,对现实无法接受的时候,比如当听到公司被清算的消息,自己是非常沮丧的。在公司做了这么久,付出这么多,但结果确实非常令人不甘心。在公司工作了四年,并没有像小说里的情形,事业走上人生巅峰,迎娶白富美。把自己的时间和注意力放在工作上,得到的回报,却是这样的结局。自己心里也无法接受这样的结局,但现实是残酷的。那么,这时我们就可以运用元认识能力来分析根本的原因:付出的与收获不成正比,这才是你的不甘心,对自己的沉没成本不甘心。那么我们应该这样想:
1. 这家公司是你自己选择的,自己自愿加入的。
2. 这个老板是你选择的。
3. 这个时间也是你选择自愿付出。自愿放弃陪家人的时间去加班,去写代码。

这时候,你就要坦然的去接受这个事实。在了解到这个趋势后,你去做什么最划算?去思考自己的后续计划最重要。

提升元认知

反思,你一定要经常对自己的失败进行反思,甚至是每天反思。程序猿经常要修复Bug,从编程里我们可以学习到:

  1. 这件事情是否有其他的方案可以实现?
  2. 如果要实现,需要花费多久,具体的成本是多少?
  3. 下一次,如何避免这类问题再次发生?

反思,其实就是回顾自己思考的过程。但有时候还不够,你得刻意练习。凡事可以经过练习获得的技能,那么你就可以通过刻意练习加速这个过程:

  1. 这个道理可以用哪些地方?还有其他地方吗?
  2. 哪些事情,是你成长的过程中了必须要做的?
  3. 在成长过程,你大概会遇到什么样的困难?
  4. 遇到这些困难,你又应该如何去解决?

一同练习

有时候在教育孩子的过程中,会运用到元认知的能力。
例如,在十一非常生气的时候,我会建议他深呼一口气,然后引导他寻找自己生气的原因:

  1. 你为什么会生气呢?
  2. 那怎么做,你才能不生气呢?
  3. 一次遇到这个问题,应该怎么解决呢?

我的领导

因为工作的原因,遇到运营的问题会比较多。我的领导,在下面几个方面,做好非常好,非常到位:
1. 对用户心理的把控,对人性的把控。
2. 自古套路得人心,每次会有很多“套路”获得用户的理解。
3. 如何安抚好你的用户?对如何处理好运营遇到的问题?

不理解

很多的时候,其实并不是他人不理解你,而是你没想清楚、你没表达清楚,所以他人无法理解你。
这个问题,简直说到我的心坎了。举一个简单的例子,最近和别人聊天,明明我是支持他的意见,但他却说,
我说的一切都是在反驳他。这时候,你运用元认知的能力分析下:

  1. 是不是你自己说话讲得太快,没有给别人留下好影响?
  2. 你确认对他人提出的问题,思考清楚了,表达清楚了?
  3. 他没有理解你的意思,是不是你们的共识出了问题?
  4. 你有站在他的角度来分析问题吗,还是以你的工作经历来讲呢?

其实,元认知能力是一种很重要的能力,也是可以刻意练习的,不是吗?
你应该拥有的最重要的能力-读后感