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

请问 Go 语言学习起来曲线陡峭嘛,容易学习嘛?

  •  
  •   t2doo · 2020-10-26 18:55:07 +08:00 · 5307 次点击
    这是一个创建于 1518 天前的主题,其中的信息可能已经有所发展或是发生改变。
    中年老汉资质不佳,试从 PHP 转 Go,学习第 3 天。。。

    目前的痛点是:func showName(a func(int, string), b, c string) func(string) stirng {}

    这种函数传参可以传函数,然后传的函数还有返回值

    为什么要这么设计?感觉这样很绕,不是太好理解呀。

    麻烦各位会 Go 的朋友给推荐下看哪本书好,或是视频,怎样学 Go 容易吃进去,回帖万福。
    32 条回复    2020-10-27 15:50:04 +08:00
    catror
        1
    catror  
       2020-10-26 18:58:28 +08:00   ❤️ 1
    这个痛点和 Go 没关系吧,觉得难理解就不要这个设计自己的函数。最好的入门教程是官方的文档。
    suomy
        2
    suomy  
       2020-10-26 19:02:55 +08:00   ❤️ 1
    > 这种函数传参可以传函数,然后传的函数还有返回值

    没看到传的参数有返回值
    mepwang
        3
    mepwang  
       2020-10-26 19:03:28 +08:00 via iPhone   ❤️ 1
    你就想像成,能使用变量的地方,也能使用函数,就好理解了。这么复杂的设计,恐怕好多年都遇不上一次
    t2doo
        4
    t2doo  
    OP
       2020-10-26 19:10:58 +08:00
    @mepwang 我还是多看看吧,可能是我想得太复杂了。。。

    目前会得语言是 PHP 写网站和接口,python 写爬虫小工具,Java 基础会了不会 spring,不知道 Go 学了能干啥:doge
    mepwang
        5
    mepwang  
       2020-10-26 19:22:47 +08:00 via iPhone   ❤️ 1
    @t2doo go 主要写高并发服务器端应用比较方便,常用的是 go 的并发机制
    hand515
        6
    hand515  
       2020-10-26 19:26:05 +08:00 via Android
    go 语法挺简单
    ben1024
        7
    ben1024  
       2020-10-26 19:38:24 +08:00   ❤️ 1
    @t2doo swoole 能做的都可以用 go,主要应用在简单脚本,高频接口,低内存服务,长连接
    php + go 配合挺香的
    xjqxz2
        8
    xjqxz2  
       2020-10-26 19:44:08 +08:00
    GO 还行吧~ 不是很难的
    rrfeng
        9
    rrfeng  
       2020-10-26 19:48:44 +08:00   ❤️ 1
    函数是一种数据结构,自然也可以被另一个函数处理。
    labulaka521
        10
    labulaka521  
       2020-10-26 19:49:45 +08:00 via iPhone
    @suomy 我猜测他的意思可能是传入一个指针 然后返回后传入的指针就会被赋值
    index90
        11
    index90  
       2020-10-26 19:54:11 +08:00   ❤️ 2
    你说的痛点是函数式编程,你可以先忽略,不是常用的
    其他语法都很简单,重点是 channel,goroutine,看 sync.WaitGroup,errgroup,http 包源码,看看如何优雅关闭 channel,看看 ActiveObject,基本上就那几种用法了。
    然后是面向接口的编程思想,如果你用 PHP 或者 Java 的 OOP 去套会很别扭的,我在这里花了比较长时间。
    最后有余力可以看看函数式编程,Go 只是实现了一些功能,并不适合函数式编程。有些地方可以取巧,但是并不方便阅读,用的地方不多,也有可能我的 FP 道行太浅。
    HuangLibo
        12
    HuangLibo  
       2020-10-26 20:09:01 +08:00
    这不就是一个闭包么
    di94sh
        13
    di94sh  
       2020-10-26 20:12:13 +08:00 via iPhone
    这种 php 比 go 用的更多吧,动态语言到处都是这种吧
    nonfu
        14
    nonfu  
       2020-10-26 20:25:51 +08:00   ❤️ 2
    这里有个写给 PHPer 的 Golang 入门教程,所有语法都有和 PHP 的类比,应该看起来更轻松些:

    <https://xueyuanjun.com/books/golang-tutorials>

    Go 入门挺简单的,比起 Java 、C 之类。
    wd
        15
    wd  
       2020-10-26 20:51:12 +08:00
    动态语言转过去估计会比较痛苦。如果一直是强制类型的语言就还好。
    qloog
        16
    qloog  
       2020-10-26 21:51:39 +08:00
    书籍:Go 语言编程<许世伟>
    然后就可以找个项目就可以干起来了,写 web 或者 api 的都可以,比如: https://github.com/1024casts/snake
    pierreorz
        17
    pierreorz  
       2020-10-26 22:14:37 +08:00
    会 JAVA 的学 GO 简直不要太容易 /我因为之前有个项目用 GO,逼着看了几天就会了,然后觉得比 JAVA 好用太多。不过目前没有项目练了。。。
    qefrgty
        18
    qefrgty  
       2020-10-26 22:41:41 +08:00
    很容易学,我原来速成过一遍,

    过一遍基本知识也才五十几个笔记代码。
    stupil
        19
    stupil  
       2020-10-26 22:43:28 +08:00
    多用用。
    lithbitren
        20
    lithbitren  
       2020-10-26 22:48:46 +08:00
    感觉是学过的语言里最容易的
    lazydog
        21
    lazydog  
       2020-10-27 00:42:54 +08:00 via Android
    learning go with tdd? github 上有个老外写的,还不错,可以试试看。
    FaceBug
        22
    FaceBug  
       2020-10-27 01:11:19 +08:00
    <?php

    $func = function (int $p1, int $p2): int {
    return $p1 + $p2;
    };

    function b(callable $f, int $c): int
    {
    return $f(1, 2) * $c;
    }

    echo b($func, 5);//15


    PHP 也是能这么写的
    catcn
        23
    catcn  
       2020-10-27 01:34:07 +08:00   ❤️ 1
    给你个豆列,久未更新:www.douban.com/doulist/3422454/
    raaaaaar
        24
    raaaaaar  
       2020-10-27 07:18:03 +08:00 via Android
    函数做参数不就是回调么。其他语言也有啊,主要是为了异步操作嘛
    treblex
        25
    treblex  
       2020-10-27 08:55:13 +08:00   ❤️ 1
    ![]( https://tva1.sinaimg.cn/large/0081Kckwgy1gk3lwtx2bfj316m09iaak.jpg)
    其实一个函数类型,可以独立出来写,表示这个函数预期的接收和输出
    和其他语言的 callback 用法是一样的
    Rebely
        26
    Rebely  
       2020-10-27 09:26:48 +08:00
    之前写 python, 写 js, 后面去学 go 。go 的语法简单,api 少, 就是 interface 这个东西对我来说太难理解了。 面前可以看懂, 但根本不会设计
    yuancoder
        27
    yuancoder  
       2020-10-27 09:40:40 +08:00
    刚开始学,语法比较别扭,多看看就好了。
    shubo83
        28
    shubo83  
       2020-10-27 11:00:49 +08:00
    你不知道 go 语言学了能干啥就开始学了,感觉有点太过焦虑了,另外一点就是如果一门语言学不好,大概率是因为基础还需要补补
    wweir
        29
    wweir  
       2020-10-27 11:18:59 +08:00
    连这个都吐槽的话,估计你看我的代码的话会哭
    gunpowderfans
        30
    gunpowderfans  
       2020-10-27 12:04:31 +08:00 via Android
    会 JavaScript 的看了就懂,这个设计非常眼熟
    chengyunbo
        31
    chengyunbo  
       2020-10-27 15:44:58 +08:00
    因为函数也是一种类型,interface 。
    我也是从 PHP 转 golang,已经快两年了。
    自己看视频吧,B 站一堆,完了自己多用。
    CodeCodeStudy
        32
    CodeCodeStudy  
       2020-10-27 15:50:04 +08:00
    JavaScript 也可以传函数啊,函数也是一种类型
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   980 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 18:59 · PVG 02:59 · LAX 10:59 · JFK 13:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.