GO工程和包
转载: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.go和test.go文件的代码。
stack.go
- package stack
- import (
- "strconv" //此包提供了基本数据类型转化为字符串,或者由字符串转化为基本数据类型
- )
- type Stack struct {
- i int
- data [20]int
- }
- func (s *Stack) Push(k int){
- s.data[s.i] = k
- s.i++
- }
- func (s *Stack) Pop(ret int) {
- s.i--
- ret = s.data[s.i]
- }
- func (s *Stack) String() string {
- var str string
- for i := 0; i < s.i; i++ {
- str = str + "[" + strconv.Itoa(i) + ":" + strconv.Itoa(s.data[i]) + "]"
- }
- return str
- }
test.go
- package main
- import (
- "fmt"
- "stack"
- )
- func main(){
- var st = new(stack.Stack)
- st.Push(1)
- st.Push(2)
- st.Push(3)
- fmt.Println(st)
- }
GO工程和包的更多相关文章
- 安卓工程修改包名后 Failed to find provider info for...问题
安卓工程修改包名后 Failed to find provider info for com.android...provider问题 原因: 1. 多处含包名文件须同时更改 2. Manifest里 ...
- 引入工程报包导入异常:import javax.servlet.annotation.WebFilter;
引入工程报包导入异常:import javax.servlet.annotation.WebFilter; (2013-02-21 16:38:00) 分类: java 今天上午导入了一个项目,用 ...
- 如何修改android工程的包名?
在我们android项目开发到一定的程度时由于需要,我们必须修改一下工程的包名,以便更好的发布我们的项目.但是在这个过程中有时候修改好了之后会出现一些错误.下面由小编一步步教你如何更改包名,和解决出现 ...
- eclipse如何修改android工程的包名?
在我们android项目开发到一定的程度时由于需要,我们必须修改一下工程的包名,以便更好的发布我们的项目.但是在这个过程中有时候修改好了之后会出现一些错误.下面由小编一步步教你如何更改包名,和解决出现 ...
- weblogic自带的jdk是在工程的包部署后编译使用
weblogic自带的jdk是在工程的包部署后编译使用的.当用户把项目打包部署到weblogic上面,运行该项目的java环境jdk就是用的weblogic自带的jdk了,工程中的jdk和编译时的jd ...
- 项目工程的包package与文件夹的关系
项目工程的包package与文件夹的关系: 1. 包名与文件夹是分层关系,包名只是一个字符串而已,包名.对应的是层级的文件夹. 如,com.Immoc.Access包,只是一个字符串.但他对应的win ...
- Maven工程JAR包关联源码
注意看上面的图,勾选了"Download Artifact Sources"和“Download Artifact JavaDoc”以后,Maven便会自动将Manven工程中的所 ...
- DRF项目工程基础包
drf开发基础包 日常使用drf进行后端开发中,每次开发新项目就的做很多的工程基础配置操作,我觉得这样是没必要的,我们主要关注在业务的开发中,而不是每次都要做这些繁琐的基础操作,所以我把这些做了一个基 ...
- web工程jar包问题
JRE System Library主要存放J2SE的标准jar,一般不需要调整. Referenced Libraries是存放第三方的jar包,也就是自己导入的jar包.在项目属性的Java Bu ...
随机推荐
- Deep Learning: Activation Function
Sigmoid Function ReLU Function Tanh Function
- POJ 3104 Drying(二分答案)
题目链接:http://poj.org/problem?id=3104 ...
- 转 。。。。一个不规则的按钮 虽然已经不适用于cocos2dx3.0以上版本 but思路就应该是这个样子滴
本篇文章主要讲一下怎么做一个不规则的按钮,比如如下图的八卦,点击绿色和点击红色部分,需要执行不同的事件
- HBase介绍及简易安装(转)
HBase介绍及简易安装(转) HBase简介 HBase是Apache Hadoop的数据库,能够对大型数据提供随机.实时的读写访问,是Google的BigTable的开源实现.HBase的目标是存 ...
- c++ 操作符 重载。
操作符如关系操作符,全局函数的话,必须第一个是class. 1.赋值(=),下标([ ]),调用(())和成员访问箭头(->)等操作符必须定义为成员,如果定义为非成员的话,程序在编译的时候,会发 ...
- bootstrap学习笔记<八>(bootstrap核心布局风格——栅格系统)
栅格系统(bootstrap的核心之一,也是bootstrap的主要布局风格) 栅格系统是对原有div布局的升级版.打破了传统div模式只能纵向垂直排列的弊端,大大提高了页面布局的速度和效果,也很好的 ...
- Jquery的普通事件和on的委托事件小案例
以click的事件为例: 普通的绑定事件:$('.btn').click(function(){})绑定 on绑定事件:$(document).on('click','.btn2',function( ...
- Css_加载样式
第一种效果: 代码如下: <div class="loading"> <span></span> <span></span&g ...
- 由《win32多线程程序设计》临界区的问题所想
之前看侯捷翻译的<win32多线程程序设计>中关于线程同步中的临界区问题,其中举得例子是对链表的操作.死锁的问题是对一个Swaplist函数的问题,现列举代码如下: void SwapLi ...
- fetchField 和 fetchColumn
public function fetchField($index = 0) { // Call PDOStatement::fetchColumn to fetch the field. retur ...