• go again


    Introducation

    (1)How to organize go code

        (2)How to develope go package

        (3)How to use go tool

    How to orgnize go code:

        workspace:

            (1)src: one pakcage per directory

            (2)pkg: package objects

            (3)bin: executable commands

        $GOPATH:

             指定workspace

        问题:

            (1)能否像jar,不提供源码,只提供编译后的结果?

                    不行! 要求全部源码.

            (2) 每个workspace下固定src,pkg,bin, 执行import时先查pkg,再查src?

                    不是! pkg只是编译后的静态库. 其与bin中的可执行命令是一样的意思.

            (3) go build, go install的区别? 

                    二者都执行编译连接, 只是后者还将应用保存到bin目录. 貌似有个bug, go build可以编译src下的go文件,但go install则要求必须有package.

            (4) reposity与package有什么区别? package name与package path有什么区别?

                        reposity是相对于git或svn等版本控制工具的存储位置而言.

                        package是相对于$GOPATH/src的存储位置而言.

                        package path与package name更直接.

    bin/

    streak # command executable

    todo # command executable

    pkg/

    linux_amd64/

    code.google.com/p/goauth2/

    oauth.a # package object

    github.com/nf/todo/

    task.a # package object

    src/

    code.google.com/p/goauth2/

    .hg/ # mercurial repository metadata

    oauth/

    oauth.go # package source

    oauth_test.go # test source

    github.com/nf/

    streak/

    .git/ # git repository metadata

    oauth.go # command source

    streak.go # command source

    todo/

    .git/ # git repository metadata

    task/

    task.go # package source

    todo.go # command source

            ----------------------------------------------------

            Golang组织源码方式:

                $GOPATH定义多个workspace, 每个workspace下固定src,pkg,bin. 可以将项目与第三方依赖放在二个不同的workspace,方便版本升级之类的操作.

    How to develope go package:

        package需要理解二个术语, package path, package name. 

        (1)前者是基于$GOPATH/src/的相对路径(相对路径不以/打头), 

        (2)后者是每个go file首行package语句定义的名字.

        二者使用的情况不同:

        (1)import语句与go tool工具都使用package path.

        (2)代码引用使用package name.

        这点对Java思维的人表示很不一般!

    How to use go tool:

        go help

        go help [topic], 换成go [topic] --help也行.

        查看go tool用法.

  • 相关阅读:
    sql笔记
    虚函数和抽象类笔记
    构造函数和静态构造函数 笔记
    在与sql server 建立连接时出现与网络相关的或特定于实例的错误
    类型转换 笔记
    test
    document.body和document.documentElement比较
    sql2005 存储过程实现分页
    新闻发布用到的存储过程和触发器
    SQL数据查询实例1
  • 原文地址:https://www.cnblogs.com/zolo/p/5849131.html
Copyright © 2020-2023  润新知