V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
y0bcn
V2EX  ›  程序员

现在 Go 环境怎么样

  •  
  •   y0bcn · 2019-09-01 14:33:12 +08:00 · 12303 次点击
    这是一个创建于 1939 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前大二在读,有没有必要从 Java 转到 go,坐标二线城市,有意去一线城市发展,但无意扎根,问一下 V 友,如果现在转去学 Go 有没有好的前景呢?

    64 条回复    2019-09-03 09:26:49 +08:00
    tomato1111
        1
    tomato1111  
       2019-09-01 14:46:03 +08:00
    楼主用 java 写出过产品了么
    dabaibai
        2
    dabaibai  
       2019-09-01 14:49:07 +08:00   ❤️ 3
    大肠都在用。小肠都死了。
    sunriz
        3
    sunriz  
       2019-09-01 14:54:27 +08:00
    学语言很快的,我刚入职的时候 go 就学了三天,用起来基本上也没什么问题,当然更深入的东西也要平时积累。先学好计算机的基础课程吧,这个才是重点,公司招人并不是很看重你用过什么语言,看重基础知识和解决问题的思路。实践方面,多做些有意义的东西,目的在于用语言的特性做出高效的东西而不是语言本身。
    reus
        4
    reus  
       2019-09-01 14:57:00 +08:00   ❤️ 4
    rust 才是世界上最好的编程语言
    sls
        5
    sls  
       2019-09-01 15:00:49 +08:00   ❤️ 1
    慎重,自从用了这个简单的语言后,其他复杂的语言都学不动了,但是选语言还是看使用场景和生态。所以先学其他的吧,从繁入简容易,由简入繁难啊
    iPhoneXI
        6
    iPhoneXI  
       2019-09-01 15:12:59 +08:00 via Android
    大学时间那么多,当然是都学
    linsijia1002
        7
    linsijia1002  
       2019-09-01 15:16:54 +08:00 via iPhone
    Go 是比较年轻的语言,直接机器码运行,效率比 java 快很多倍。编译配置方便简单,导入包很方便,相比于 java 的配置麻烦 xml 语法,极简主义者表示有点密集恐惧。
    troywinter
        8
    troywinter  
       2019-09-01 15:44:51 +08:00   ❤️ 23
    无意引战,目前在 web 开发领域 go 还是没法和 java 相比,如果你是那种完全不写测试的人,认为自己写的代码都可以手工测试或者不需要测试,那你用什么语言其实都没有区别,java 语言提供的动态性以及 jvm 的 jit 和一系列的运行时优化,都使得一是做 di 非常简单快速并有庞大的库帮助你在十几分钟内构建完善的单元测试流程,二是 jit 的优化,在一些 critical path 上的性能可以达到非常高的水平。在开发关键大型系统时,良好的测试覆盖可以有效减少 bug。

    一些人总是提出直接 go 是直接机器码运行,比 java 快,其实不全对,没有 jit 加持的 java 确实性能很差,go 的方式是通过确定性的机器码的运行方式,使得性能是可预见的,不会出现 java 那种 jit 优化之后性能极速上升的例子,但性能可以维持在比较平稳的状态。

    至于配置麻烦的问题,你如果不用 di,那也不需要什么配置,反正我司都是一套 bazel 构建到底,构建也都不用操心。

    换语言时,要考虑到方方面面的问题,以及很多问题可选的解决思路,不应该迷失在别人的观点中。

    如果你决定转 go 了,那么祝你找到心怡的工作,可以多交流,我也在写 go。
    jss
        9
    jss  
       2019-09-01 16:53:47 +08:00
    有人说:我们现在不是考虑要不要学 Go,而是考虑怎样挤出更多的时间了解学习 Go。
    jamesliu96
        10
    jamesliu96  
       2019-09-01 16:58:18 +08:00 via Android
    去看看著名的屑 openbilibili/go-common,只要写得比它好就行(
    qinxi
        11
    qinxi  
       2019-09-01 17:03:44 +08:00
    @linsijia1002 #7 9102 年了
    MMMMMMMMMMMMMMMM
        12
    MMMMMMMMMMMMMMMM  
       2019-09-01 17:08:24 +08:00   ❤️ 1
    我永远喜欢 node(划掉) Python(划掉) Go(划掉) Rust(黑体 加粗).jpg
    misaka19000
        13
    misaka19000  
       2019-09-01 17:21:44 +08:00
    都学,这样工作你都能胜任
    salamanderMH
        14
    salamanderMH  
       2019-09-01 17:24:21 +08:00 via Android
    @troywinter 这个是正经回答
    xmge
        15
    xmge  
       2019-09-01 17:40:39 +08:00   ❤️ 1
    哈哈,这个我说一下,从 java 转 go 两年,go 的应用场景呢,高并发,为什么高并发,创建的协程消耗比线程少。

    一般都是大公司在用,因为大公司目前才有高并发的场景。

    目前的岗位不是很多,面试的机会其实也不是很多,自我感觉,前几天去找来着。

    但是,未来,如果物联网发展越来越迅猛的话,感觉 go 会起来
    y0bcn
        16
    y0bcn  
    OP
       2019-09-01 18:18:32 +08:00
    @tomato1111 写过几个比赛的项目
    tourist2018
        17
    tourist2018  
       2019-09-01 18:24:24 +08:00
    头条 滴滴 微博 阿里 腾讯 小米 这些是我去面试过的公司 基本也都是核心业务部门在用了

    我觉得如果你的目标是一线二线互联网公司的话 完全不用担心现在 golang 没有工作机会 但是我感觉和语言没啥关系 只要别学特别偏的。。。比如 C# 这个是真的不好找互联网公司的工作
    tourist2018
        18
    tourist2018  
       2019-09-01 18:25:20 +08:00
    补充下 面过的 小米视频业务 微博是广告业务 阿里是阿里云 腾讯腾讯视频企鹅号
    swulling
        19
    swulling  
       2019-09-01 18:31:09 +08:00 via iPhone
    go 的第三方库质量和数量都不太好。如果你是业务为王,还是用 java 吧
    hst001
        20
    hst001  
       2019-09-01 18:34:38 +08:00
    @MMMMMMMMMMMMMMMM #12 戏很足
    pursuer
        21
    pursuer  
       2019-09-01 18:55:15 +08:00
    现在各个领域有最适合的语言,可以看看自己感兴趣的领域
    ScepterZ
        22
    ScepterZ  
       2019-09-01 18:57:44 +08:00
    都学吧
    mamahaha
        23
    mamahaha  
       2019-09-01 19:46:19 +08:00   ❤️ 1
    大公司用 go 可以节约服务器成本,如果进不了大公司就别瞎起哄了。
    AX5N
        24
    AX5N  
       2019-09-01 19:53:26 +08:00
    @linsijia1002 胡扯,java 也就比 c/c++慢一点,你 go 能快很多倍那岂不是比 c 还要快?
    ZoolYe
        25
    ZoolYe  
       2019-09-01 19:54:15 +08:00
    @linsijia1002 都什么年代了,Java 还用 XML 配置吗?你当 SpringBoot、SpringCloud 不存在吗? JVM 这么多年的优化,你敢说 Go 还比 Java 快很多倍?
    bakabie
        26
    bakabie  
       2019-09-01 22:05:06 +08:00
    不是非必要,但是有时间可以学
    Srar
        27
    Srar  
       2019-09-01 22:16:01 +08:00   ❤️ 10
    慢的主要原因
    akring
        28
    akring  
       2019-09-01 22:26:07 +08:00   ❤️ 3
    @troywinter 像您这样有价值,态度又平和诚恳的回帖真的太少了,必须点个赞
    janus77
        29
    janus77  
       2019-09-01 22:37:21 +08:00 via iPhone
    大二在读谈什么转?我寻思你靠他混饭吃呢。当然是都学啊
    cheesea
        30
    cheesea  
       2019-09-01 23:53:08 +08:00   ❤️ 4
    我觉得最忌讳的就是给自己划定圈子,然后就只关注这个圈子的东西,这样不好。
    比如我是 java/go/python 工程师,我是后端 /前端 /运维,甚至我是程序员,然后其他领域的就什么都不懂,也不去了解,这会限制你的发展和眼界。
    你才大二,应该多去接触和了解各个领域的东西。
    ihciah
        31
    ihciah  
       2019-09-02 01:46:57 +08:00
    作为一个 Golang 用户,暑假去了阿里,然后学了两个月 Java。。。
    blless
        32
    blless  
       2019-09-02 02:16:11 +08:00 via Android
    @troywinter 测试我还是觉得 go 写得爽,测试文件就在对应代码一起,我觉得很舒服,因为测试用例不仅仅只是测试,其实也算使用方式教程之类的。接口测试天然 mock,自带 benchmark。
    jit 虽然快,但是也要预热外加消耗大量内存,用起来还是不如 go 爽
    ericgui
        33
    ericgui  
       2019-09-02 03:18:39 +08:00
    你才大二,着急干什么

    先把 Java 学好,如果你 Java 学好了,找工作不愁,而且你再学其他任何语言,都小菜一碟
    qbmiller
        34
    qbmiller  
       2019-09-02 08:11:51 +08:00 via iPhone
    @jamesliu96 #10 哈哈
    jss
        35
    jss  
       2019-09-02 08:21:20 +08:00 via iPhone
    @AX5N 保守估计在相同的环境和执行目标的情况下,Go 程序比 Java 或 Scala 应用程序要快上 2 倍,并比这两门语言使用少占用 70% 的内存。如果说 Go 比 C++ 要慢 20%,那么 Go 就要比任何非静态和编译型语言快 2 到 10 倍,并且能够更加高效地使用内存。
    jonsun30
        36
    jonsun30  
       2019-09-02 08:35:56 +08:00
    @jss 你的 Java 程序 JIT 优化过了吗?还有更高效的使用内存这句话真的太主观武断了吧?
    'Will your toy benchmark program be faster if you write it in a different programming language? It depends on how you write it!'
    tt67wq
        37
    tt67wq  
       2019-09-02 08:39:06 +08:00
    搞 k8s 很赚,其他的一般般
    fuxiaohei
        38
    fuxiaohei  
       2019-09-02 08:51:46 +08:00
    如果是二线城市,还是用的人多的语言机会更多
    tairan2006
        39
    tairan2006  
       2019-09-02 08:55:06 +08:00
    都学啊

    不过写的话还是 go 比较爽,除了没泛型
    jianson2006
        40
    jianson2006  
       2019-09-02 09:06:00 +08:00
    @sls 十分赞同你的观点,我是零基自学 PY,但我觉得总缺对代码的理解。现在学习 C 语言。我认真对待学习还是从 C 开始,效果确实有很大的不同。
    encro
        41
    encro  
       2019-09-02 09:19:26 +08:00
    如果自认为 NB,学习 GO,写一个 NB 的开源项目,比如 NPS,frp,bleve, beego, etcd 这样的,基本找工作不会有问题了。

    如果自认为不太 NB,学习 JAVA,慢慢来,毕竟 JAVA 生态环境摆在那里,还有很多螺丝需要拧。

    打算回二线,具体是哪个城市,去搜索下看看,目前用 GO 的机会很少。
    kilen3a
        42
    kilen3a  
       2019-09-02 09:22:52 +08:00
    都学啊,反正才大二,时间多的是
    0NF09LJPS51k57uH
        43
    0NF09LJPS51k57uH  
       2019-09-02 09:27:48 +08:00
    目前 90%以上的程序员写的代码还触及不到语言的性能瓶颈。
    notreami
        44
    notreami  
       2019-09-02 09:48:07 +08:00
    为啥总有人盯着语言呢。java 用来做业务、大数据处理。golang 用来做运维工具。
    那么你想搞业务、大数据,还是服务运维??
    no1xsyzy
        45
    no1xsyzy  
       2019-09-02 10:04:56 +08:00
    除了提供新的思维方法外,新语言无意义
    一般人们所称转换语言是转换生态圈,还有就是少打几个字符(懒)
    不同语言间生态割裂其实是个问题
    唯一的纽带是 C
    no1xsyzy
        46
    no1xsyzy  
       2019-09-02 10:06:25 +08:00   ❤️ 1
    @jianson2006 (但是 Python 对于代码抽象的处理程度不是比 C 高吗?
    daryl
        47
    daryl  
       2019-09-02 10:17:30 +08:00
    巧了,我想从 go 转 java。
    luckRay
        48
    luckRay  
       2019-09-02 10:17:31 +08:00
    推荐还是 JAVA 为主吧,毕竟体量在这里。
    jss
        49
    jss  
       2019-09-02 10:23:55 +08:00 via iPhone
    @jonsun30 [转述大佬的话] Java 和 Scala 使用的 JVM,C# 和 VB.NET 使用的 .NET CLR。尽管虚拟机的性能已经有了很大的提升,但任何使用 JIT 编译器和脚本语言解释器的编程语言( Ruby、Python、Perl 和 JavaScript )在 C 和 C++ 的绝对优势下甚至都无法在性能上望其项背。
    jianson2006
        50
    jianson2006  
       2019-09-02 10:52:24 +08:00
    @no1xsyzy PY 学习下来我只其用法,但不知道为什么要这样用?有很多原理我是不懂的,所以,我想从 C 中获取。就是编码到底是如何与硬件沟通的?我只是想把在提高的过程中可以把一件原理也可以搞明白。
    hyl24
        51
    hyl24  
       2019-09-02 11:15:26 +08:00
    学 java 吧 以后 java 往中间件方向走 就学 GO
    DovaKeen
        52
    DovaKeen  
       2019-09-02 11:19:28 +08:00
    你才大二,可以多了解一些的
    Galileo
        53
    Galileo  
       2019-09-02 11:19:41 +08:00
    请谨慎考虑
    jonsun30
        54
    jonsun30  
       2019-09-02 11:33:25 +08:00
    Raymon111111
        55
    Raymon111111  
       2019-09-02 11:38:51 +08:00
    语言完全不是重点

    把基础知识学好吧, 比如数据结构, 操作系统
    gz911122
        56
    gz911122  
       2019-09-02 11:41:37 +08:00
    @jonsun30 这个测试报告来看似乎 java 更快一些?
    jonsun30
        57
    jonsun30  
       2019-09-02 11:47:50 +08:00
    @gz911122 其实我想说的是这种 assumption 是没有意义的,每个语言都有其诞生的理由。绝大部分程序员(包括我自己)所写的程序还真的触及不到语言的瓶颈,有时候是你摸不到性能的天花板,还有时候是我们的代码由于各种各样的原因真的很屎。
    richzhu
        58
    richzhu  
       2019-09-02 12:37:52 +08:00
    一提语言就吵架,我真的服了,性能高能怎么地? 能高多少? 性能高的代码你能写出来?写出来了别人能看懂?你的业务多少 qps 就性能性能的....好好学学计算机基础,哪个场景就用哪个语言,个人喜欢 go 就学 go,总之就是学起来别犹豫,学会了一个再学另一个也很简单,不能因为犹豫学哪个而耽误时间。
    Keyes
        59
    Keyes  
       2019-09-02 14:53:22 +08:00
    @jss 大佬求教,所以 Rust 是兼顾软件工程和原生编译的最佳选择吗?
    solaro
        60
    solaro  
       2019-09-02 16:23:50 +08:00
    先学 JAVA,JAVA 能让你进银行或者国企、事业单位混日子,能混日子才有时间学 Go,然后用 Go 做东西玩,玩到一定成都又可以当成敲门砖进大公司
    securityCoding
        61
    securityCoding  
       2019-09-02 16:35:09 +08:00
    上手写 , 不要想这么多
    reus
        62
    reus  
       2019-09-02 17:00:20 +08:00
    @Keyes 当然啦,rust 是互联网时代的 C++语言
    zibber
        63
    zibber  
       2019-09-02 17:18:48 +08:00
    新项目不出意外我感觉都会用 go 去尝试,机会还是很多
    conver
        64
    conver  
       2019-09-03 09:26:49 +08:00 via iPhone
    大学的时间,都学绰绰有余
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2960 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 13:09 · PVG 21:09 · LAX 05:09 · JFK 08:09
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.