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用法.

随机推荐

  1. Facebook等使用苹果源生分享

         1.Facebook官方的SDK分享               2.ShareSDK,第三方集成的分享方式      3.网页分享方式分享      4.IOS6之后,苹果自己集成了对于F ...

  2. 查询数据库中表或视图或存储过程的数量 sql 语句

    如果一个数据库中表的数量较多的话,那么在统计数据库中表的数量或视图或存储过程的数量时,如果还有一个一个去数,那就太麻烦了,其实可以通过 sql 语句来查询的,sql 语句的查询方法如下: sql se ...

  3. linx 实用操作命令一

    如果apache安装成为linux的服务的话,可以用以下命令操作:service httpd start 启动service httpd restart 重新启动service httpd stop ...

  4. c# 将页面导出到word(含图片及控件)

    /// <summary> /// 创建word /// <param name="filePath">文件路径 </param> /// &l ...

  5. asp.net常用字符串函数

    /// <summary> /// 提取字符串中的数字 /// </summary> /// <param name="str"></pa ...

  6. setjmp 与 longjmp

    setjmp和longjmp是C语言独有的,只有将它们结合起来使用,才能达到程序控制流有效转移的目的,按照程序员的预先设计的意图,去实现对程序中可能出现的异常进行集中处理. 先来看一下这两个函数的定义 ...

  7. leetcode 83

    83. Remove Duplicates from Sorted List Given a sorted linked list, delete all duplicates such that e ...

  8. _func_

    __func__标识符 引用:http://blog.csdn.net/zhoujunyi/article/details/1572325 __func__是C99标准里面预定义标识符, 它是一个st ...

  9. 破解Demo

    需要破解的程序界面如下: 需要破解的程序的主要代码如下: void CEasyCrackMeDlg::OnBnClickedButtonOk() { // TODO: 在此添加控件通知处理程序代码 T ...

  10. 网络HTTP请求状态详解

    HTTP状态码大全 完整的 HTTP 1.1规范说明书来自于RFC 2616,你可以在http://www.talentdigger.cn/home/link.php?url=d3d3LnJmYy1l ...