首页 > 其他分享 >GO 模块化

GO 模块化

时间:2023-02-03 19:44:18浏览次数:43  
标签:package 模块化 go test func GO main mod

任何语言都不可避免要进行模块化,这里就简单介绍下

同package 同文件夹下 不同文件之间调用

案例

该方式必须所有文件都为main,也就是包名相同,才可以运行

test.go

package main

func sayHello() {
	println("Hello makalo")
}

main.go

package main // 声明 main 包,表明当前是一个可执行程序

func main() { // main函数,是程序执行的入口
	sayHello()
}

目录结构

image-20230203161451258

编译并运行

这时候执行的命令,不再是

go run main.go

而是

go run test.go main.go

结果

image-20230203160355824

不同package 不同文件夹下 不同文件之间 调用

这里有大坑,谨慎进入

原因参考这里:

https://blog.csdn.net/qq_42428613/article/details/119327441?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-1-119327441-blog-124147043.pc_relevant_3mothn_strategy_recovery&spm=1001.2101.3001.4242.2&utm_relevant_index=4

总结一下注意的点:

  • 在 go1.16 版本发布后,go module 由原来的默认值auto 变为on 了,意味着 go module 默认已经开启了,所以如果你看的资料太老,原来的资料上还是 GOPATH 方式,而你的 go 版本又比较新,就会有问题,因为GOPATH 和 GO MOD 不能一起使用
  • 不要在GOPATH/src 下写了,现在都是 使用 go mod 只要你基础环境配好,随便在那个目录写可以
  • go.mod才是根目录

有关go mod ,请参考:

https://www.cnblogs.com/makalochen/p/17090291.html

目录结构

image-20230203185716482

main.go

package main // 声明 main 包,表明当前是一个可执行程序

import "modtest/test"

func main() { // main函数,是程序执行的入口
	test.SayHello2()
}

test.go

package test

// 首字母大写才可被包外访问
func SayHello2() {
	println("Hello makalo2")
}

go.mod

go.mod 文件是由 go mod 相关命令自动生成,如:

mod init modtest

就会生成

module modtest

go 1.19

运行结果

image-20230203190225826

标签:package,模块化,go,test,func,GO,main,mod
From: https://www.cnblogs.com/makalochen/p/17090294.html

相关文章

  • golang context上下文值传递与控制
    1.Context详解在Go语言中context包允许传递一个“context”到程序中。Context如超时或截止日期(deadline)或通道,来指示停止运行和返回。例如,如果正在执行一个web......
  • <statement>or DELIMITER expected, got ‘id‘)的原因及解决办法
    Ideamybatis的xml报错可能的原因:在idea里,sql节点有语言注入有检测,你在sql节点写sql语句都不会报错,那么判断检测是根据sql的语言来进行相关判断的,而我们通常在sql节点内......
  • 【转】也许是最客观、全面的比较 Rust 与 Go:都想把 Rust 也学一下
    最近一年,将Rust和Go进行比较的不少,但不少都不公正,带感情色彩。而这篇文章客观、全面的分析对比了Rust和Go,让你具体项目时选择最合适的。Rust还是Go,哪个更好......
  • MongoDB CURD操作
    window平台安装MongoDBMongoDB下载MongoDB提供了可用于32位和64位系统的预编译二进制包,你可以从MongoDB官网下载安装,MongoDB预编译二进制包下载地址:http://w......
  • djangorestframework开发配置
    django和restframework结合。对api再次封装返回结果形如。非drf浏览器状态码返回基础模型封装分页格式调整{"msg":'success',"code":200,"data":[]}......
  • Django Meta中proxy、abstract、managed使用方法
    目录DjangoMeta中proxy、abstract、managed使用方法proxyabstractmanagedDjangoMeta中proxy、abstract、managed使用方法proxy使用多表继承时,每个子类模型都会创建......
  • 服务器设置导致mongo数据库的链接数受限
    记录一次使用mongoDB遇到的BUG,就是服务链接mongodb报错[05-Nov-202216:46:05]WARNING:[poolwww]child10231saidintostderr:"ERROR:[poolwww]failedtos......
  • 利用引用传递一次遍历构造菜单树(附java&go demo)
    目录原理讲解javademoGodemo优点原理讲解利用引用传递,当儿子的儿子变动的时候,自己的儿子的儿子也变动(取地址)javademopackagecom.huiyuan.algorithm;importjava.......
  • django rest framework 过滤时间操作
    https://www.nhooo.com/note/qa3v7f.html 通常我们会用到过滤两个时间段内的一些数据,当我们用djangorestframework的时候,他可以根据字段filter_fields进行过滤,但是......
  • Go 语言学习之路(笔记)
    将大佬的博客整理成相关目录。查找方便go语言安装及介绍go语言环境搭建go语言基础之变量和常量go语言基础之基本数据类型go语言基础之运算符go语言基础之流程控制Go......