<>

作者: 凹大猫的鱼 | 来源:发表于2018-09-29 14:51 被阅读0次

    第三章重点:

    第三章主要讲的是代码的管理,在第一章里面有的东西已经写进去了,这里按照老师的课程总结一下:

    1. 同一目录下面源码应该声明属于同一个代码包,而且同一个包下面的源文件之间的函数调用是可以屏蔽大小写(私有和共有接口)。

    2.源码文件声明的包的名字可以和目录不一致,但编译生成的文件的名字和父目录是一致的。

    3.如果声明的包的名字和目录的名字不一致,那么怎么引用这个包里面的接口??第一章里面写过了,go是按照文件地址寻址的。所以规则如下:

    import 文件夹的路径
    
    包名.接口名字()
    
    我们导入的时候肯定是文件的路径,但调用的时候要用在源码文件里面声明的package的名字。
    

    4.程序实体的访问规则,通过大小写来决定接口的访问规则,首字母大写代表的是公开的,小写代表的是只有同一个包下面可以引用。


    internal包

    这个东西还是第一次见,按照老师说的:

    internal 仅能被直接父级和子包引用。这个意思是什么那??
    
    假设我们工程的目录结构如下:
    
    q4
     - lib
        - internal
            -test
                -test2
                    -demo9.go
                -demo8.go
             internal.go
        - demo7.go
    - demo6.go
    
    q4目录下面有lib子目录和demo6.go,lib下面有Internal目录和demo7.go,internal目录下面有internal,go和test目录,test目录下面有test2目录,test2下面有demo9.go,这样除了demo6不能引用internal.go,其它的都属于inter的父目录和子目录下面的,所以可以引用。
    

    思考题

    1. 如果你需要导入两个代码包,而这两个代码包的导入路径的最后一级是相同的,比如:dep/lib/flag和flag,那么会产生冲突吗?
    
    分两种情况:
        
        1.如果目录名字相同 && 源文件里面声明的package名字一样,那么肯定是冲突的。
        2.如果目录名字相同但源文件里面声明的package名字不同,那么就不存在冲突
    
    2. 如果会产生冲突,那么怎么解决这种冲突,有几种方式?
    
        我能想到的就是给每个包起个别名。
    

    相关文章

      网友评论

          本文标题:<>

          本文链接:https://www.haomeiwen.com/subject/yktboftx.html