转载: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. Deep Learning: Activation Function

    Sigmoid Function ReLU Function Tanh Function

  2. POJ 3104 Drying(二分答案)

    题目链接:http://poj.org/problem?id=3104                                                                  ...

  3. 转 。。。。一个不规则的按钮 虽然已经不适用于cocos2dx3.0以上版本 but思路就应该是这个样子滴

    本篇文章主要讲一下怎么做一个不规则的按钮,比如如下图的八卦,点击绿色和点击红色部分,需要执行不同的事件

  4. HBase介绍及简易安装(转)

    HBase介绍及简易安装(转) HBase简介 HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问,是Google的BigTable的开源实现.HBase的目标是存 ...

  5. c++ 操作符 重载。

    操作符如关系操作符,全局函数的话,必须第一个是class. 1.赋值(=),下标([ ]),调用(())和成员访问箭头(->)等操作符必须定义为成员,如果定义为非成员的话,程序在编译的时候,会发 ...

  6. bootstrap学习笔记<八>(bootstrap核心布局风格——栅格系统)

    栅格系统(bootstrap的核心之一,也是bootstrap的主要布局风格) 栅格系统是对原有div布局的升级版.打破了传统div模式只能纵向垂直排列的弊端,大大提高了页面布局的速度和效果,也很好的 ...

  7. Jquery的普通事件和on的委托事件小案例

    以click的事件为例: 普通的绑定事件:$('.btn').click(function(){})绑定 on绑定事件:$(document).on('click','.btn2',function( ...

  8. Css_加载样式

    第一种效果: 代码如下: <div class="loading"> <span></span> <span></span&g ...

  9. 由《win32多线程程序设计》临界区的问题所想

    之前看侯捷翻译的<win32多线程程序设计>中关于线程同步中的临界区问题,其中举得例子是对链表的操作.死锁的问题是对一个Swaplist函数的问题,现列举代码如下: void SwapLi ...

  10. fetchField 和 fetchColumn

    public function fetchField($index = 0) { // Call PDOStatement::fetchColumn to fetch the field. retur ...