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)
相关推荐
luj_17683 分钟前
心形曲线轨迹控制三大关键技术
c语言·开发语言·c++·经验分享·算法
Mininglamp_271839 分钟前
Claude Code 封禁中国开发者之后:本地 AI 编程工具的替代方案实测
开发语言·人工智能·windows·开源软件·ai-native
思麟呀1 小时前
C++17(三)if constexpr+折叠表达式
开发语言·c++
醉城夜风~1 小时前
Java详解经典算法题:接雨水(三种实现方案+原理剖析)
java·开发语言·算法
qydz111 小时前
杰理开发基础知识(3)
开发语言·嵌入式开发·杰理科技
贾斯汀frank1 小时前
C# 15 类型系统改进:Union Types
开发语言·windows·c#
阿里嘎多学长1 小时前
2026-07-10 GitHub 热点项目精选
开发语言·程序员·github·代码托管
CHHH_HHH2 小时前
【C++11】深入解析C++可变参数模板
开发语言·c++·算法·stl·c++11
IT_陈寒2 小时前
SpringBoot自动配置不是你以为的那样的智能
前端·人工智能·后端
jimy14 小时前
C语言模拟对象、方法:“函数指针+结构体“复用函数指针指向的函数体
c语言·开发语言