go work 不同包下mod + work实现.go文件的互相调用

一、文件架构

cpp 复制代码
.
├── go.mod
├── go.work
├── main
│   └── main.go
└── util
    ├── go.mod
    └── util.go

其中go.mod

cpp 复制代码
module test

go 1.21.0

其中go.work

cpp 复制代码
go 1.21.0

use (
        .
        ./util
)

main/main.go

cpp 复制代码
  1 package main                                                                                    
  2                                                                                                 
  3 import (                                                                                        
  4     "fmt"                                                                                       
  5     "uuu"                                                                                       
  6 )                                                                                               
  7                                                                                                 
  8                                                                                                 
  9 func main() {                                                                                   
 10     a := utils.Add(1, 3)                                                                        
 11     fmt.Println(a)                                                                              
 12 }                                                                                                     

util/go.mod

cpp 复制代码
  1 module uuu                                                                                      
  2                                                                                                 
  3 go 1.21.0 

util/util.go

cpp 复制代码
  1 // util.go                                                                                      
  2 package utils                                                                                   
  3                                                                                                 
  4 import "fmt"                                                                                    
  5                                                                                                 
  6 func Add(a int, b int) int {                                                                    
  7  return a + b                                                                                   
  8 }                                                                                               
  9                                                                                                 
 10 func init(){                                                                                    
 11     fmt.Println("hahahah")                                                                      
 12 }  

执行后:

cpp 复制代码
┌─[zhaoky@zhaoky]─[~/Desktop/kaiyue/module]
└──╼ $go run ./main
hahahah
4

需要注意的是,在go.work中添加了子模块的路径,否则在main.go 中会报错如下

cpp 复制代码
┌─[zhaoky@zhaoky]─[~/Desktop/kaiyue/module]
└──╼ $go run ./main
main/main.go:5:2: package uuu is not in std (/usr/local/go/src/uuu)
相关推荐
CRMEB系统商城16 分钟前
家电零售的供应商协同与物流提效
java·开发语言·人工智能·小程序·1024程序员节
王大师王文峰29 分钟前
Java+AI 面试题(二):业务场景设计 10 例【客服机器人、合同审查、Text2SQL、告警降噪、成本优化】场景题答法与追问链路
java·开发语言·人工智能
紧跟先前的步伐31 分钟前
Go AI Agent 实战 13|大模型流式输出 Streaming 的实现
人工智能·ai·golang·1024程序员节
言乐638 分钟前
Python实现三轴联动根据数据自动打磨镜片模型
开发语言·python
CHHH_HHH1 小时前
【Linux网络篇】初识网络与Socket编程基础
linux·服务器·c语言·开发语言·网络·后端·1024程序员节
弦儿1 小时前
后端 Web 实战:员工管理(新增员工 + 事务管理 + 文件上传)
java·后端
Gopher_HBo1 小时前
Go reflect包值操作 Value 的读写、可设置性与 interface 布局
后端
jimy11 小时前
C++ 中 xvalue 的 identity 存在哪里?和 lvalue 的 identity 有什么区别?
开发语言·c++·1024程序员节
yujunl1 小时前
U9 无授权的模式WebAPI开发的总结
开发语言·1024程序员节
zzu123zsw1 小时前
为什么 Python 做 Agent 总在并发中崩溃?拆解 Blockcell 在 Rust 下的 Host-Cell 隔离与自愈状态机
开发语言·python·rust·大模型·ai agent