<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>转型 on 山行小记</title>
    <link>https://ruijingan.pages.dev/tags/%E8%BD%AC%E5%9E%8B/</link>
    <description>Recent content in 转型 on 山行小记</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    <copyright>@2025</copyright>
    <lastBuildDate>Thu, 18 Mar 2021 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://ruijingan.pages.dev/tags/%E8%BD%AC%E5%9E%8B/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>写了七年移动端，我开始学 Go</title>
      <link>https://ruijingan.pages.dev/posts/2021/start-learning-go/</link>
      <pubDate>Thu, 18 Mar 2021 00:00:00 +0000</pubDate>
      <guid>https://ruijingan.pages.dev/posts/2021/start-learning-go/</guid>
      <description>&lt;p&gt;去年年底提了内部转岗，从 iOS 组转到基础架构组，主要语言是 Go。今年三月正式过过去了。趁记忆新鲜，写写一个纯客户端背景的人学 Go 的真实体验，给想转的后端朋友一点参考。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;语法层面：三天就敢写，三个月才敢合并。&lt;/strong&gt; Go 的语法是出了名的简单，关键字二十几个，我有 OC 和 Swift 的底子，看完 tour 一天就能上手写。但敢写和敢上线是两回事——前两个月我写的代码被 mentor 挑出的问题比写出来的功能还多：channel 用完不关、err 一路往上传但没人真正处理、map 并发读写直接 panic 上线。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;客户端背景带来的三个思维定势：&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;总想找&amp;quot;主线程&amp;quot;。&lt;/strong&gt; 客户端开发里 UI 更新必须在主线程，这个惯性让我一开始畏手畏脚。后端的世界里没有这个概念，goroutine 随便开，要担心的是别的东西。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不习惯显式的 err。&lt;/strong&gt; 客户端习惯了异常和回调，&lt;code&gt;if err != nil&lt;/code&gt; 的样板代码看得我密集恐惧症都犯了。后来才理解这是设计取舍：错误就是返回值的一部分，不该被藏起来。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;低估了部署环境。&lt;/strong&gt; 客户端最多适配几个 OS 版本，后端要面对的是内存、连接数、磁盘 IO，这些我以前从没操心过的东西，现在都是日常。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;学习方法上最有效的一件事&lt;/strong&gt;：mentor 让我先别看资料，直接读公司里一个成熟服务的源码，遇到不懂的再回头查。比从书上一章章啃快多了，而且读到的是&amp;quot;生产级的 Go&amp;quot;而不是&amp;quot;教科书式的 Go&amp;quot;。&lt;/p&gt;
&lt;p&gt;转岗三个月，最大的感受是：客户端转后端，语法是最不重要的部分，真正要补的是对分布式系统的直觉。这条路还长，慢慢来。&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
