Go语言(工程和包)

在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

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语言工程以及包的使用的介绍。

时间: 2024-07-30 08:34:56

Go语言(工程和包)的相关文章

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

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

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

引入工程报包导入异常:import javax.servlet.annotation.WebFilter; (2013-02-21 16:38:00)   分类: java 今天上午导入了一个项目,用的是tomcat7.0的,但是我自己是tomcat6.0的,结果项目导入就很郁闷的发现有的类打上了红叉叉,进去一看,import javax.servlet.annotation.WebFilter 不能引入,找不到类,发现是少导入了servlet-api 包的问题,然后就去网上下载了一个包,可是导

R语言 文本挖掘 tm包 使用

#清除内存空间 rm(list=ls()) #导入tm包 library(tm) library(SnowballC) #查看tm包的文档 #vignette("tm") ##1.Data Import 导入自带的路透社的20篇xml文档 #找到/texts/crude的目录,作为DirSource的输入,读取20篇xml文档 reut21578 <- system.file("texts", "crude", package = &quo

R语言中文分词包jiebaR

前言 本文挖掘是数据挖掘中一个非常重要的部分,有非常广阔的使用场景,比如我们可以对新闻事件进行分析,了解国家大事:也可以对微博信息进行分析,通过社交舆情看看大家的关注点.通过文本挖掘找到文章中的隐藏信息,对文章的结构进行分析,判断是不是同一个作者写文章:同时可以对邮件分析,结合bayes算法判断哪些是垃圾邮件,哪些是有用的邮件. 本文挖掘的第一步,就是要进行分词,分词将直接影响文本挖掘的效果.R语言在分词方面有很好的支持,接下来就给大家介绍一个不错的R语言中文分词包"结巴分词"(jie

R语言下解决包不能安装的问题

目的:这次主要是为了安装Rcpp包, 方法:install.packages("Rcpp") 结果:出错,,于是,我从官网下载Rcpp_0.11.2.tar.gz,在终端输入 R CMD INSTALL Rcpp_0.11.2.tar.gz,提示我的R语言版本太低,需要3.0以上 改进:卸载R语言2.15版本后,重新安装 1: wget http://cran.r-project.org/src/base/R-2/R-3.1.0.tar.gz 2: tar -xzvf R-3.1.0.

R语言:recommenderlab包的总结与应用案例

R语言:recommenderlab包的总结与应用案例 1. 推荐系统:recommenderlab包整体思路 recommenderlab包提供了一个可以用评分数据和0-1数据来发展和测试推荐算法的框架.它提供了几种基础算法,并可利用注册机制允许用户使用自己的算法recommender包的数据类型采用S4类构造. (1)评分矩阵数据接口:使用抽象的raringMatrix为评分数据提供接口.raringMatrix采用了很多类似矩阵对象的操作,如 dim(),dimnames() ,rowCo

R语言︱H2o深度学习的一些R语言实践——H2o包

R语言H2o包的几个应用案例 笔者寄语:受启发想了解H2o平台的一些R语言实现,网上已有一篇H2o的demo文件.笔者在这多贴一些案例,并且把自己实践的一些小例子贴出来. 关于H2o平台长啥样,可以看H2o的官网,关于深度学习长啥样,可以看一些教程,比如ParallelR博客之中的解析. 下面主要是贴几个案例,让大家看看. ------------------------------------------------------------ Matt︱R语言调用深度学习架构系列引文 R语言︱H

如何修改android工程的包名?

原文地址:http://jingyan.baidu.com/article/380abd0a71a1061d90192cfd.html 修改过程中可能会出现一些别的小问题,自行解决就好,多个包名需要修改的话,可以逐个进行修改!!!!! 在我们android项目开发到一定的程度时由于需要,我们必须修改一下工程的包名,以便更好的发布我们的项目.但是在这个过程中有时候修改好了之后会出现一些错误.下面由小编一步步教你如何更改包名,和解决出现的错误. 现将project菜单下的 Build AutoMat

Go语言基础之包

Go语言基础之包 在工程化的Go语言开发项目中,Go语言的源码复用是建立在包(package)基础之上的.本文介绍了Go语言中如何定义包.如何导出包的内容及如何导入其他包. Go语言的包(package) 包介绍 包(package)是多个Go源码的集合,是一种高级的代码复用方案,Go语言为我们提供了很多内置包,如fmt.os.io等. 定义包 我们还可以根据自己的需要创建自己的包.一个包可以简单理解为一个存放.go文件的文件夹. 该文件夹下面的所有go文件都要在代码的第一行添加如下代码,声明该