• daydayyiday 置顶
    2018-08-17
    注意是核心36讲,不是三个月从入门到精通,建议可以先从教程预习一下https://tour.go-zh.org/welcome/1

    作者回复: 好,你这个留言可以作为精选了:)。从零基础怎么一步步走我已经画好图了,择日发布。

     3
     34
  • Dylan 置顶
    2018-08-15
    讲得很到位呢,之前因为想看以太坊的源码,自己已经啃了一遍Go语言,现在回过头来在跟着老师学习,受益匪浅呀~

    作者回复: 对大家有帮助就好!

    
     5
  • 松烽 置顶
    2018-08-15
    可以先看看郝爷的Go并发编程,真不错,很体系
    
     1
  • 婺华 置顶
    2018-08-16
    我也觉得这种学习方式挺好,是新的尝试,因为对于有点基础的同学,总比去看太过基础的东西来的有效率,讲到点子上,也是不错的
    
    
  • 咖啡色的羊驼
    2018-08-15
    看完本文加深的关键点:
    1.同一个文件夹下,包的声明语句需要相同,代表同一个包。
    2.包名不需要和其所在的文件夹名相同。
    3.首字母大小写来代表可见性,大写public/小写private
    4.模块级私有internal的使用姿势✔✔✔(这个厉害了,之前还不知道这玩意儿)

    回答下问题:
    1.import后路径最后一级相同,不一定会冲突。
    分为两种情况:
    a.如果文件夹下文件声明的包名相同,则肯定冲突,会报错redeclared。
    b.如果文件夹下文件声明的包名不同,也不会冲突。

    2.如果冲突,我能想到的解决方式:
    a.给包设置别名,调用的时候来区分开不同的package,比如:import(b "bbbb")

    b.导入的点操作,import(. "bbbb")。这样就可以直接调用bbbb下面的函数而不用再bbbb.funcname的方式调用。

    c.如果只是想引入某包并没有在代码中实际调用则可以这么处理来避免冲突:import(_ "bbbb")

    d.像第一问一样采取不同的包名声明,毕竟包名不一定要和文件夹名一样

    不过总的推荐还是方法a。
    展开
    
     64
  • dittolÖk
    2018-08-15
    还是不太适应这种学习方式

    作者回复: 你好,具体说说怎么不适应呢?

    
     52
  • 郝林
    2018-08-16
    一些非核心的知识我在本专栏里其实是一笔带过甚至舍弃的,我相信抓问题只要抓重点就能解决80%甚至95%,剩下的大家再稍微自己弥补一下就OK了,这样有自己的努力在里面效果也会更好。不过,为了让大家更好的通过本专栏学习,我会再出一篇指引性的文章供大家参考。
    
     30
  • 云学
    2018-08-15
    go语言有些地方设计的太坑了,感觉没有审美观,首字母大写这个在其他语言是用来表示类型的,它偏要独树一帜,看来还是python的哲学好!
    建议作者多给出一些最佳实践,不太习惯这种踩坑式教学,语言的第一感觉很重要,这些坑以附录的形式给出比较合适。

    作者回复: 你好,每个语言几乎都有自己风格和编程哲学,学以致用最重要,一些细节不用太在意。

     1
     7
  • 々雪虎々_卍
    2018-09-27
    1. 导入的包会出现冲突
    2. 从go语言的规范来看有几种避免的方法:
    Import declaration Local name of Sin

    import "lib/math" math.Sin
    import m "lib/math" m.Sin
    import . "lib/math" Sin
    import _ "lib/math"

    可以看出, 别名的方法比较好
    展开
    
     6
  • hb
    2018-09-09
    有一个疑惑,go install生成的一个.a文件的具体作用是什么?我在demo中导入的还是源码文件的Hello函数,我尝试把pkg目录下的.a删除,还是可以正常运行和编译
    
     6
  • Dkrxs
    2018-08-15
    我觉得这种学习方式挺好的,要是分享的在网上一搜一大把的那种demo什么的,买这个这个还有什么意义

    
     5
  • 金阳
    2018-08-15
    go语言学习从入门到放弃(开玩笑)…学了这几篇,有些概念还不是很熟悉,主要是之间的联系,希望后面能给出解答。这种教学方式,就像小时候背古诗,你们先死记硬背,意思怎么样先不要理解,背会再说,霸王硬上弓。
    
     5
  • Realm
    2018-08-15
    1 导入包时,import的是相对src的相对文件路径,使用包内的函数时,其限定符是:包名.函数名(),压根与程序的文件名没有啥关系.
    2 大写:Prubic;小写:private.

    作者回复: 说得很多,源码文件名是代码包内部的细节,不对外暴露。

    
     4
  • 飞吧蛐蛐
    2018-10-15
    会有冲突,解决方法:
    1、包的别名。
    2、如果第二个导入的包不被显示使用,可以使用匿名导入( 包的 _操作,只调用包的init()函数 )。
    3、可以使用 包的点操作。(使用点操作引入的包,调用函数时直接使用函数名即可)。
    4、修改包名。(如果库源码文件比较多,比较费劲)
    
     3
  • 萧末
    2018-08-15
    可以通过包别名的方式解决冲突,如果导入的包不显式使用可以采用匿名的方式导入包

    作者回复: 答得很好。

    
     3
  • leo
    2018-08-15
    老师好,对于包管理的问题,之前会遇到cycle的问题,报错信息也很少,是否有什么定位方法?

    作者回复: 你好,我记得现在go命令会报错的吧。

    
     3
  • Erico.Len
    2018-08-16
    第一次接触go,虽然大学学过C,第一次看的很焖不知道联系 照着敲代码 看到报错后分析问题 疑问就会豁然开朗 建议以后可以举例一些实际项目中会关联的问题 ,通过这节课我觉得可以体会到以后搭建项目中包和目录以及程序实体之间的联系。比如MVC这个怎么布置会更合理一些 本人刚学意见不知道是否合理 望老师谅解

    作者回复: MVC其实是一种设计模式组合,这在Java盛行的时代很流行。Java的很多Web框架都把这个组合模式实现了,然后提供完整的API给你。但是现在互联网尤其是移动互联网时代这就有些过时了,因为前端面向的端不只网页浏览器一个了,不适合再由写后端的人去搞了,所以前后端分离的做法开始流行起来,MVC这种前后端通吃的模式用的人就少了。建议你即使自己搞网站也不要用完整的MVC,这种模式现在看起来太重了,不太适合快节奏开发。

    
     2
  • 金阳
    2018-08-15
    go语言学习从入门到放弃(开玩笑)…学了这几篇,有些概念还不是很熟悉,主要是之间的联系,希望后面能给出解答。这种教学方式,就像小时候背古诗,你们先死记硬背,意思怎么样先不要理解,背会再说,霸王硬上弓。

    作者回复: 你好,由于一些基础的东西我并没有阐明,所以你可以把你的具体问题抛到这里。

     1
     2
  • 后端进阶
    2018-08-15
    库源码文件就相当于Java中用maven打包成本地的依赖包,这样就好理解了
    
     2
  • dlili
    2019-11-28
    总结一下前三章的内容:
    1. go的组织结构:GOROOT,GOPATH,GOBIN其中日常接触最多的是GOPATH,它是go的工作空间,主要有三个目录,src存储我们编写的工程源码(go 以包为代码组织单位,因为包名和目录名同名,因此我们可以认为一个目录就是一个包),bin是存放可执行文件的目录,比如beego框架下的脚手架bee.exe,这是由go get/install之后编译生成的。pkg是归档文件(静态链接库)存储的地方,我们使用go get/install之后会在此目录下生成相应的文件,以便我们在编写自己的程序时引用这些代码。

    2. 命令源码文件:其实就是程序的入口,这个入口可以理解为我们编写,组织程序的入口;也是go run的入口,在程序编译时会依据此命令源文件查找依赖的库文件(包)

    3. 库源码文件:可以理解成两部分,一部分是我们自己写的一些包,另一部分是我们go get获取的包;区别是我们在go build/run我们的命令源文件时,是否对这些包进行编译。

    对于包的导入规则,internal的用法需要掌握,这样更有利于组织代码,使程序体的访问权限得到更好的规范,有利于代码的安全稳定

    ps:老师可以把代码放到github上吗?这样更方便查看对比
    展开

    作者回复: 早就有了呀:https://github.com/hyper0x/Golang_Puzzlers

    
     1
我们在线,来聊聊吧