转载:http://blog.csdn.net/achelloworld/article/details/43956831

Go语言中,包是函数与数据的集合,用package定义一个包,包的名字不一定要跟文件名字一样,接下来,将学习如何使用Go语言的包。

首先,我们创建一个Stack包,然后用一个主程序来调用这个包里面的方法。这实际上涉及到Go语言中的工程的分包和编译。Go语言是这么来配置它的工程的,如下图

其中package是工程的根目录,我们需要事先设置环境变量GOPATH,如下

而bin目录和pkg目录是go编译自动生成的,而src是手动创建的。所以创建工程的步骤大致是

(1)进入到package目录,即工程根目录

(2)执行mkdir src,创建一个src源文件存放目录

(3)在源文件目录中创建一个stack包,即mkdir stack

(4)再创建一个test包,用于测试stack的功能,此包中为主程序

(5)在src目录下,执行go install stack,在src外生成了pkg文件夹,linux_386代表执行平台

(6)在src目录下,执行go install test,在src外生成了bin文件夹,里面得到的就是可执行文件了

以上就是Go语言的工程构建步骤与注意事项,注意一定不要忘了GOPATH的设置

如果需要查看Go语言相关的环境变量,使用命令go env即可,如下

接下来贴上stack.gotest.go文件的代码。

stack.go

  1. package stack
  2. import (
  3. "strconv"       //此包提供了基本数据类型转化为字符串,或者由字符串转化为基本数据类型
  4. )
  5. type Stack struct {
  6. i int
  7. data [20]int
  8. }
  9. func (s *Stack) Push(k int){
  10. s.data[s.i] = k
  11. s.i++
  12. }
  13. func (s *Stack) Pop(ret int) {
  14. s.i--
  15. ret = s.data[s.i]
  16. }
  17. func (s *Stack) String() string {
  18. var str string
  19. for i := 0; i < s.i; i++ {
  20. str = str + "[" + strconv.Itoa(i) + ":" + strconv.Itoa(s.data[i]) + "]"
  21. }
  22. return str
  23. }

test.go

    1. package main
    2. import (
    3. "fmt"
    4. "stack"
    5. )
    6. func main(){
    7. var st = new(stack.Stack)
    8. st.Push(1)
    9. st.Push(2)
    10. st.Push(3)
    11. fmt.Println(st)
    12. }

GO工程和包的更多相关文章

  1. 安卓工程修改包名后 Failed to find provider info for...问题

    安卓工程修改包名后 Failed to find provider info for com.android...provider问题 原因: 1. 多处含包名文件须同时更改 2. Manifest里 ...

  2. 引入工程报包导入异常:import javax.servlet.annotation.WebFilter;

    引入工程报包导入异常:import javax.servlet.annotation.WebFilter; (2013-02-21 16:38:00)   分类: java 今天上午导入了一个项目,用 ...

  3. 如何修改android工程的包名?

    在我们android项目开发到一定的程度时由于需要,我们必须修改一下工程的包名,以便更好的发布我们的项目.但是在这个过程中有时候修改好了之后会出现一些错误.下面由小编一步步教你如何更改包名,和解决出现 ...

  4. eclipse如何修改android工程的包名?

    在我们android项目开发到一定的程度时由于需要,我们必须修改一下工程的包名,以便更好的发布我们的项目.但是在这个过程中有时候修改好了之后会出现一些错误.下面由小编一步步教你如何更改包名,和解决出现 ...

  5. weblogic自带的jdk是在工程的包部署后编译使用

    weblogic自带的jdk是在工程的包部署后编译使用的.当用户把项目打包部署到weblogic上面,运行该项目的java环境jdk就是用的weblogic自带的jdk了,工程中的jdk和编译时的jd ...

  6. 项目工程的包package与文件夹的关系

    项目工程的包package与文件夹的关系: 1. 包名与文件夹是分层关系,包名只是一个字符串而已,包名.对应的是层级的文件夹. 如,com.Immoc.Access包,只是一个字符串.但他对应的win ...

  7. Maven工程JAR包关联源码

    注意看上面的图,勾选了"Download Artifact Sources"和“Download Artifact JavaDoc”以后,Maven便会自动将Manven工程中的所 ...

  8. DRF项目工程基础包

    drf开发基础包 日常使用drf进行后端开发中,每次开发新项目就的做很多的工程基础配置操作,我觉得这样是没必要的,我们主要关注在业务的开发中,而不是每次都要做这些繁琐的基础操作,所以我把这些做了一个基 ...

  9. web工程jar包问题

    JRE System Library主要存放J2SE的标准jar,一般不需要调整. Referenced Libraries是存放第三方的jar包,也就是自己导入的jar包.在项目属性的Java Bu ...

随机推荐

  1. const变量赋值报错分析

    const变量赋值报错分析 const变量赋值报错 从变量到常量的赋值是合法C++的语法约定的, 如从char 到const char顺畅: 但从char **到 const char **编译器就会 ...

  2. XML约束——Schema约束

    XML Schema 也是一种用于定义和描述 XML 文档结构与内容的模式语言,其出现是为了克服 DTD 的局限性 XML Schema VS DTD: •XML Schema符合XML语法结构. • ...

  3. SQL中char、varchar、nvarchar的区别(zhuan)

    char    char是定长的,也就是当你输入的字符小于你指定的数目时,char(8),你输入的字符小于8时,它会再后面补空值.当你输入的字符大于指定的数时,它会截取超出的字符.   nvarcha ...

  4. PL/SQL 编写规范

    大小写风格 所有数据库关键字和保留字均大写; 缩进风格 使用空格, 缩进2格(前边空两个格, 后边要与SQL语句的一致, 比如下面:) SELECT * FROM TABLE 空格及换行 1行只写1条 ...

  5. phpStorm如何在Console控制台执行php文本,而不是浏览器中

    如何在Console控制台执行php文本 phpStorm默认会在浏览器中执行脚本 默认的配置 配置PHP脚本 扩展,配置项目运行

  6. JavaSE复习_2 对象与类

    △java中的制表符.'\t'制表符."\t"也可以. △方法内不能再定义一个方法,互相平级. △数组中boolean类型的变量默认为false;char默认为'\u0000'(\ ...

  7. linux 命令 第一波

    man 命令名字 查看命令详细解释 q退出cd 切换目录cd .. 回到上级目录su 切换用户pwd 当前目录mkdir cmy 创建cmy文件夹[目录]rm cmy 删除cmy文件夹[如果cmy里面 ...

  8. Java Base64编码解码实现

    我尝试过两种方式:java自带的sun.misc的工具类,还有commons-codec.jar 1.sun.misc的工具类 String encoderStr = null; BASE64Enco ...

  9. 怎么进入BAT的研发部门?

    怎么进入BAT的研发部门? ======================================剑指offer+leetcode+geeksforgeeks+编程之美+算法导论====秒杀BA ...

  10. 实体类实现Parcelable(包含boolean类型)

    实体类实现Parcelable接口需要实现方法: public ExtSignClockEntity(Parcel in) { timeMess = in.readString(); repeatMe ...