V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Co1a
V2EX  ›  问与答

Go 语言入门疑惑

  •  
  •   Co1a · 2018-11-30 13:45:08 +08:00 · 4622 次点击
    这是一个创建于 2187 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在正儿八经准备系统学习 GO 之前在 youtube 上观看了大致一周的学习视频,趁着最近 X 东购书满减,买了一本 Go 语言圣经,这下好了,完全一头雾水,之前自认为还能了解个大概,现在完全一脸懵逼,是因为非科班的原因?!?顺便求一下 Go 语言相关练习题

    52 条回复    2018-12-02 00:38:35 +08:00
    loading
        1
    loading  
       2018-11-30 13:47:12 +08:00 via Android
    码起来再说
    mason961125
        2
    mason961125  
       2018-11-30 13:47:37 +08:00
    科班?你问问这里野路子有多少...
    Yoock
        3
    Yoock  
       2018-11-30 13:48:34 +08:00 via iPhone
    所以说,你哪里不懂呢?
    Co1a
        4
    Co1a  
    OP
       2018-11-30 13:49:45 +08:00
    @loading 小结哪怕是章节后并没有例题&&翻译不完全?第一章大概有十几个 slice,一脸懵逼啊
    bonfy
        5
    bonfy  
       2018-11-30 13:50:21 +08:00   ❤️ 2
    这个建议你有一定的目标,完成个小的 project, 然后再审视一下之前学的东西,哪些不稳固的 重点加强下
    学以致用,不要为了学而学,个人看法

    顺便有兴趣的话 看看这个: https://github.com/bonfy/go-mega 照着完成一个网站啥的,可能对 Go 的认识更直观
    Co1a
        6
    Co1a  
    OP
       2018-11-30 13:50:30 +08:00
    @Yoock slice 的概念以及相关的入门题目
    cp333
        7
    cp333  
       2018-11-30 13:51:37 +08:00 via iPhone
    快速上手看完 go by example 就行了
    loading
        8
    loading  
       2018-11-30 13:55:25 +08:00 via Android
    没有任何编程经验?
    chucongqing
        9
    chucongqing  
       2018-11-30 13:56:24 +08:00
    一个周还没写代码?先随便找几个需求码起来啊!
    Co1a
        10
    Co1a  
    OP
       2018-11-30 13:56:29 +08:00
    @loading
    loading
        11
    loading  
       2018-11-30 13:58:57 +08:00 via Android   ❤️ 1
    建议先去学别的语言,例如 python。

    go 确实很难的。
    AzadCypress
        12
    AzadCypress  
       2018-11-30 14:21:31 +08:00 via Android
    我感觉完全没有编程经验的话直接学 Go 不是很好入门,尤其是从 GoPL 这本书入门
    ClutchBear
        13
    ClutchBear  
       2018-11-30 14:33:59 +08:00
    golang 不适合没有其他语言基础的人直接学习,
    现在没有大神或者培训班总结出一套良好的适用多数人的学习路线.

    java 和 python 有.
    chenset
        14
    chenset  
       2018-11-30 14:34:13 +08:00
    写网络工具, 自从用了 GO 以后就没再看过 Python 一眼...
    lucifer9
        15
    lucifer9  
       2018-11-30 14:34:15 +08:00
    别看翻译的书
    zhaishunqi
        16
    zhaishunqi  
       2018-11-30 14:39:44 +08:00
    你不会当看小说一样的全看了一遍吧...
    fy1993
        17
    fy1993  
       2018-11-30 14:40:53 +08:00   ❤️ 1
    在看 go 语言学习笔记,不懂的地方照着书上的例子边敲边理解,目前感觉良好
    88250
        18
    88250  
       2018-11-30 14:41:54 +08:00   ❤️ 1
    Go 边看边练 -《 Go 学习笔记》系列 https://hacpai.com/article/1437497122181
    Co1a
        19
    Co1a  
    OP
       2018-11-30 14:48:01 +08:00
    可能我说的不太确切。。。之前 12 年学过 Python,高中三年过去语法糖忘得差不多了,现在大一老师带我们入门 C
    所以想学习一些别的语言
    Co1a
        20
    Co1a  
    OP
       2018-11-30 14:50:15 +08:00
    12>>初二
    loading
        21
    loading  
       2018-11-30 14:51:16 +08:00 via Android
    建议先把 c 学扎实。快考试了吧。
    Co1a
        22
    Co1a  
    OP
       2018-11-30 14:52:43 +08:00
    @loading 考试还行吧。。。书上例题也不怎么难,我们现在才学到指针,太慢了,我直接自学刷 runoob 的 C 语言 100 例,专科还是得靠自学
    d5
        23
    d5  
       2018-11-30 14:58:00 +08:00 via iPhone
    建议看陈佳烨(无闻)大神的 Go 基础视频教程
    cin
        24
    cin  
       2018-11-30 14:58:15 +08:00
    https://tour.golang.org/ 跟着官方的 tour 把代码敲出来.
    samt42
        25
    samt42  
       2018-11-30 15:05:49 +08:00
    如果你会 C 语言或者学过 APUE,应该会很简单,基本不用看书了
    tt67wq
        26
    tt67wq  
       2018-11-30 15:06:46 +08:00
    直接去找个 go 的工作就行了
    Rehtt
        27
    Rehtt  
       2018-11-30 15:27:09 +08:00 via Android
    做一个小项目边做边学,我当初用 go 写的爬虫就是边做边学的
    kangkang
        28
    kangkang  
       2018-11-30 16:08:11 +08:00
    专科通病:觉得老师教的太慢
    boris1993
        29
    boris1993  
       2018-11-30 16:25:10 +08:00 via Android
    书?
    脑子里有了需求
    网上跟着教程学了语法,数据结构等必备基础
    开始写,一边写一边纠正知识上的误区
    完成,运行,结束
    书?好像没书啥事。
    hehe12dyo
        30
    hehe12dyo  
       2018-11-30 17:11:56 +08:00
    go 不适合没有基础的人。
    tcpdump
        31
    tcpdump  
       2018-11-30 17:34:19 +08:00 via Android
    标记一下
    tingyunsay
        32
    tingyunsay  
       2018-11-30 17:40:38 +08:00
    写呀,先别让程序奔溃慢慢改逻辑~~
    Co1a
        33
    Co1a  
    OP
       2018-11-30 17:46:21 +08:00
    @kangkang 一周只有三节 C 语言,迫于无奈,自己学习
    kangkang
        34
    kangkang  
       2018-11-30 17:50:38 +08:00
    @Co1a 要是真的理解了 C,学 Go 根本不用一天。这两个语言的关系非常暧昧
    whoami9894
        35
    whoami9894  
       2018-11-30 18:03:02 +08:00 via Android
    @kangkang

    细节得花时间掌握,int[]和[]int,typedef a b 和 type b a 之类的就很别扭
    Co1a
        36
    Co1a  
    OP
       2018-11-30 18:25:15 +08:00
    @kangkang 道理我都懂,这不就和念书一个道理吗。。。你懂了和掌握了并不是一个东西,圣经这本书只能说她讲的太透彻,一个基本数据章节的浮点数(详见 P42)他能给你画个函数图形输出样例.一个复数小结(详见 P46)能够提及用 image 函数和 color 函数制出 mandelbrot 集的黑白图。。。,这才仅仅是第三章基本数据就有了这么些个函数,这本书得入门之后深度研读,总而言之,这本书目前不适合我
    kingcos
        37
    kingcos  
       2018-11-30 18:29:17 +08:00 via iPhone
    看了一个库,就开始上手撸……其实也没多难,goroutine 没深入😂
    tomoya92
        38
    tomoya92  
       2018-11-30 18:33:33 +08:00 via iPhone
    看一下基础,然后选一个框架,开发一个小网站,学的最快,不要一直看视频和书,一直看不动手,大都是前学后忘
    kangkang
        39
    kangkang  
       2018-11-30 18:49:39 +08:00
    @Co1a 你可能没懂我在说什么...
    JaguarJack
        40
    JaguarJack  
       2018-11-30 19:10:26 +08:00 via iPhone
    看书,第一遍你绝对懵懵懂懂,记住一定要看第二遍
    anonymous256
        41
    anonymous256  
       2018-11-30 19:35:32 +08:00 via Android
    没有其它语言基础,最好不要碰 golang。
    golang 中面向对象的设计和其它语言截然不同。golang 中的
    struct 和 interface 实现了其它语言中[类,继承,多态]。
    新人必然很难理解这种设计~建议从 python 入手,再试试 golang
    mritd
        42
    mritd  
       2018-11-30 19:55:59 +08:00 via iPhone
    相信我,基础语法搞完就开始造轮子就行了
    SuperMild
        43
    SuperMild  
       2018-11-30 21:53:51 +08:00
    你这种情况,不建议学 Go,建议先用 Python 或 C 写些东西,培养一下编程的感觉。
    cgpiao
        44
    cgpiao  
       2018-11-30 22:21:09 +08:00
    php 欢迎你
    falcon05
        45
    falcon05  
       2018-11-30 22:25:06 +08:00 via iPhone   ❤️ 1
    我是看 go 语言实战 入门的,圣经节奏太慢了,这本快一些。
    mangoDB
        46
    mangoDB  
       2018-11-30 23:35:40 +08:00 via Android
    之前有其他语言学习经验吗?如果有的话,学起来不难。如果完全没有经验,估计会有点坎坷。
    SorcererXW
        47
    SorcererXW  
       2018-11-30 23:41:21 +08:00   ❤️ 1
    瞄几眼基本语法, 就直接上 Leetcode 用刷题, 刷个几道题目就熟悉了, 就我而言, 这是熟悉新语言最快的方式
    接下去就可以上手做项目了, 一些高级的特性跟着项目边做边学
    Co1a
        48
    Co1a  
    OP
       2018-12-01 10:37:06 +08:00 via iPhone
    @falcon05 就是这个意思……慢但是详细,准备再买一本,go tour 其实就是基本语法,开始造轮子了
    vsomeone
        49
    vsomeone  
       2018-12-01 12:25:57 +08:00
    Go 其实和 C 很像。我猜可能设计者一开始有抱着开发一个更好用的 C 的目标
    所以不如先把 C 用熟练吧
    abcbuzhiming
        50
    abcbuzhiming  
       2018-12-01 12:41:52 +08:00
    @anonymous256 我这么说吧,Go 根本就不想实现什么“继承”,“多态”。Go 的核心思想是组合,所以才会有那么特别的接口实现。继承封装多态是过去传统的面向对象理论界喜欢的东西,工程界更关注的是组合,因为组合的耦合度是最低的。我建议如果要学 go,最好把继承封装多态这套东西全抛开
    aa514758835
        51
    aa514758835  
       2018-12-01 14:21:24 +08:00
    看视频+多敲敲,
    anonymous256
        52
    anonymous256  
       2018-12-02 00:38:35 +08:00 via Android
    @abcbuzhiming 不太同意你的看法。因为“封装” “多态”“继承”不是实现的目的,而是实现的结果。go 是一门面向对象的语言,体现了这些思想毫不奇怪,只是它看起来“不寻常”一些。

    1. 封装是 go 自身的特性之一,比如函数名首字母大写才能在 package 外使用。通常而言,我只会把封装好的函数使用首字母大写,供其它的 package 调用。而其它我不希望别人调用的方法和结构体,首字母小写。go 为什么要搞大小写,说到底还是为更好的封装一个包。

    2. go 的确没有继承的概念,"Composition over inheritance",它通过对象组合实现了多态行为和代码复用。多态行为也是它的典型特征,接口最容易体现多态。

    https://spf13.com/post/is-go-object-oriented/
    https://golangbot.com/polymorphism
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1106 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 19:04 · PVG 03:04 · LAX 11:04 · JFK 14:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.