Go语言(工程和包)

【Go】工程创建与包管理 2022年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.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语言工程以及包的使用的介绍。

 

 

Go语言常见错误 | 工程组织不合理 (工程结构和包的组织) 优秀的工程结构以及合理的包组织,是实现项目可维护性和可扩展性的重要一环。在Golang的开发中,应该避免将所有代码放在一个包或者一个目录中,而是要根据逻辑和功能进行合理的划分。无论是工程结构还是包的组织,一切都应遵循“尽量简单,易于理解”的原则。只有这样,才能确保代码质量,优化团队协作,提高开发效率。以上这些只是理论,实践中需要根据具体的项目和团队情况进行适当的调整和变化,所以理解和掌握原则比遵循硬性规定更为重要。 阅读详情

相关推荐

薛定谔虚拟筛选实战:如何用PDB文件快速构建受体格点(避坑指南)

本文提供了薛定谔虚拟筛选实战指南,聚焦于如何从PDB文件快速、精准地构建受体格点。文章详细解析了可变残基的理性处理策略、基于配体尺寸的盒子量化设置方法,并分享了高级约束与排除体积的实战技巧,旨在帮助用户避开常见陷阱,提升虚拟筛选的成功率与效率。

weixin_28419039的博客 252

设计模式Go版-策略模式

----------------strategy.go----------------- package strategy const STRATEGY_300_RETURN_299 = "满300返299" const STRATEGY_REBATE_80 = "八折" type CashAcceptor interface { AcceptCash(float64) f

Coding changes the world 596

扣子(coze)案例^第22期:零代码打造小红书竞品监控系统+AI自动生成运营策略建议

本文详细介绍了如何利用扣子(coze)平台零代码搭建小红书竞品监控系统。该系统通过自动化工作流抓取竞品笔记数据,并存入飞书多维表格,结合AI能力自动生成包含可视化分析报告在内的运营策略建议,帮助运营者高效进行数据驱动的市场分析。

weixin_29313239的博客 1004

[go] 策略模式

定义一系列算法,并将每种算法分别放入独立的类中,以使算法的对象能够相互替换。

ldxxxxll的博客 884

基于Active-HDL的HDL设计录入与仿真

作者:毛茏玮 / Saint 掘金:https://juejin.im/user/5aa1f89b6fb9a028bb18966a 微博:https://weibo.com/5458277467/profile?topnav=1&amp;wvr=6&amp;is_all=1 GitHub:github.com/saint-000 优快云: https://me.youkuaiyun.com/qq_4053...

一个会写代码的烤鸭 7780

配置思科交换机冗余链路汇聚

本文对交换机端口汇聚配置进行说明

istrangeboy&begin zero的博客 6684

GO语言-包的使用

GO语言包的使用

qq522044637的博客 478

2023华为OD面试手撕真题【最长公共前缀】

2023华为OD面试手撕真题【最长公共前缀】

MISAYAONE的博客 5239

【Go语言】Go项目工程管理

Go 1.11 版本开始,官方提供了 Go Modules 进行项目管理,Go 1.13开始,Go项目默认使用 Go Modules 进行项目管理。使用 Go Modules的好处时不再需要依赖 GOPATH,可以在任意位置进行 Go 项目的创建,还能够通过 GOPROXY 配置镜像源,解决 Go 语言依赖下载慢的问题。

Python、Golang、大数据 2127

无源元器件-电容选型参数总结

电容选型时,需要考虑的参数多种多样,这些参数的选择会直接影响到电路的性能、稳定性、成本等多个方面。本文对电阻电容磁珠电感的参数进行详细介绍并总结。

fydar的博客 835

锂电池充放电管理-单片机通用模版

- **①两节锂电池通过电阻分压检测ADC,再根据电压划分电量等级;** - **②充电使用的是锂电池充电IC方案,可通过硬件电阻参数调节充电电流,并可以通过STAT引脚检测充电和满电状态(充电注意会抬高电压);** - **③放电根据ADC_BAT检测电池电量进行等级划分(注意大负载电压骤降瞬间);** - **④充放电过程注意在电量划分等级临界值来回抖动现象;**

a6662580的博客 1488

Go语言分包编程

G语言多包编程出错 go: go.mod file not found in current directory or any parent directory; see 'go help modules'

mockery_B的博客 1500

智能合约监控告警:提示工程架构师用AI Prompt实现精准预警

当AI大模型(尤其是代码理解模型如CodeLlama、GPT-4 Code)与区块链数据结合,智能合约监控迎来范式革新。AI模型如何精准理解智能合约的业务特殊性?如何避免"AI幻觉"导致的误报?如何让模型学会区分"正常异常"与"攻击前兆"?答案藏在"提示工程"(Prompt Engineering)中。理解特定智能合约的业务逻辑(如DeFi协议的清算机制、NFT的铸造规则)识别复杂的攻击模式(如重入攻击的调用链特征、闪电贷的套利路径)结合链上链下数据进行多维度推理(如关联价格波动与异常交易)

AI架构全栈开发实战笔记 1010

跟着google工程师学Go语言(十三):Golang包和封装

欢迎来到:Google资深工程师深度讲解Go语言 视频地址:Google资深工程师深度讲解Go语言 - 包和封装 封装 名字一般使用CamelCase(首字母大写) 首字母大写:public 首字母小写:private 包 每个目录一个包 main包包含可执行入口 为结构定义的方法必须放在同一个包内 可以是不同文件 - 像 fmt、os 等这样具有常用功能的内置包在...

u010363932的专栏 1215

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【Go语言基础【20】】Go的包与工程

【Go语言基础【20】】Go的包与工程

hiliang521的博客 1172

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

6.(go语言)工程管理

在实际的开发工作中,直接调用编译器进行编译和链接的场景是少而又少,因为在工程中不会简单到只有一个源代码文件,且源文件之间会有相互的依赖关系。如果这样一个文件一个文件逐步编译,那不亚于一场灾难。 Go语言的设计者作为行业老将,自然不会忽略这一点。早期Go语言使用makefile作为临时方案,到了Go 1发布时引入了强大无比的Go命令行工具。

行走的皮卡丘 1005

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

go语言新建工程

使用go语言建立一个工程

weixin_47238047的博客 1042

Go语言(Golang)环境搭建详解

本文为原创文章,转载注明出处,欢迎扫码关注公众号flysnow_org或者网站http://www.flysnow.org/,第一时间看后续精彩文章。觉得好的话,顺手分享到朋友圈吧,感谢支持。 最近写了很多Go语言的原创文章,其中Go语言实战系列30篇,近15W字,还有最近更新的Go经典库系列,不过通过大家的咨询来看,还是想要一些入门的知识,这一篇文章写于2017年初,这里再更新一下,发给...

flysnow_org的博客 1373

Golang 包的定义、引入和工程管理

代码结构的编排是一门编程语言的基础,本文专门谈谈 Golang 包的定义、引入和工程管理,搞清楚 Golang 各个包之间是如何定义和引入的。 包的基本概念 在实际开发中,随着代码量越来越大功能越来越复杂,单个文件已经不适应继续使用的时候就需要对代码进行切割。 将各个功能切割最常用的是通过函数,那么对单个文件中很多的函数切割就用到包的概念。 一句话定义:包是用来组织源代码,并实现命名空间的管理。 用到包的编程语言有很多,Python 中的包就和 Go 的很相似,都是通过 import 来引入,C 也有类似的

极客点儿 1145

golang【GO语言基础】go项目工程解析

编程环境Linux,开发工具VScode go基础,在golang中:问题分析: 1.go环境解析: 在我们安装go的时候,会下载安装包,然后启用安装,在安装的过程中,需要指定安装路径 /usr/local/go 这个是我的安装路径。安装后go下面有这么多东西,这个就是我们的GOROOT路径。 然后我们发现,我们还需要一个GOPATH路径,GOPATH路径下有三个文件夹。 2.GOROOT和GOPATH? 这个时候新手可能会纳闷?什么是GOROOT?什么又是GOPATH? G

qq_45668263的博客 766

安装go语言开发环境

安装go语言开发环境安装VScode编辑器安装golang安装设置环境变量创建 hello,world安装必要的工具和插件安装git客户端安装go的一些工具设定内容居中、居左、居右SmartyPants安装运行gotour编写第一个包与测试注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 本次配置在VMWare虚拟机+Ubuntu20.04环境下完成。 安装VScode编辑器 进入 VScode官网下载deb包 打开下载文件所在目录的终端

weixin_43985359的博客 616

【Go基础】包与工程化和常用标准库

本文主要介绍了Go项目的整体结构以及如何使用自己的包和第三方包,同时介绍了Go中常用的一些标准库,功能还是较为丰富的,接口使用起来也很方便

Ricky的博客 1572

【Hello Go】Go语言工程管理

Go语言工程管理

小萌新的博客 432

从0开始学GO之包与工程管理

介绍了Go语言中包以及工程管理相关

墨1024 560

Go+ 包(Package)

Go+ 是一门融合工程开发的 Go、数据科学领域的 Python、编程教学领域的 Scratch,以 Python 之形结合 Go 之心,让工程师处理数据不需要学习新的开发语言,让初学者学习编程、开发作品的门槛更低的编程语言。

精益求精,永无止境,永远在路上! 642

Go 工程管理和工作区

工作区 在Go语言中,Go通过包的方式进行管理项目 Go源代码必须放置在工作区中,否则在导入包时编译器会默认去Path中寻找包 结构 src 通过代码的形式组织文件(一般保存代码文件) pkg 一般存放通过go install生成的可执行文件 bin 和pkg目录的功能类似 包操作 导入包 导入包必须使用,否则无法通过编译 // 一般用于导入单个包或少量包 import os // 也可以这样导入 import ( "fmt" "os" ) 点操作 可以不写包名直接使用,

Tine Aine 214
上一篇: Go语言的初步认识
下一篇: Go语言(遍历文件夹)
ACHelloWorld
博客等级 码龄14年 35粉丝 90原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值