猿问

如何在 go 1.16 中嵌入 go.mod & go.sum

我想在父模块中嵌入一个子模块目录,但golang提醒我pattern tpl/api_new/*: cannot embed file tpl/api_new/README.md: in different module


我知道我可以删除go.mod和go.sum,然后在生成新项目时运行“go mod init && go get -u”。


底部是文件树和嵌入变量,我还可以做些什么来嵌入go.mod和go.sum?谢谢~


//go:embed tpl/api_new/*

var apiNew embed.FS

├─api_new

│  │  .editorconfig

│  │  .gitignore

│  │  generate.go

│  │  go.mod

│  │  go.sum

│  │  makefile

│  │  README.md

│  │

│  ├─cmd

│  │  └─app

│  │          main.go

│  │

│  ├─config

│  │      config-dev.toml

│  │      config-live.toml

│  │      config-local.toml

│  │      config-prod.toml

│  │      config-stress.toml

│  │      config-trunk.toml

│  │

│  └─internal

│      └─app

│          ├─http

│          │  │  server.go

│          │  │

│          │  └─example

│          │          hello.go

│          │

│          ├─lib

│          │  ├─err

│          │  │      codecommon.go

│          │  │      err.go

│          │  │

│          │  ├─pms

│          │  │      init.go

│          │  │

│          │  └─util

│          │          md5.go

│          │          url.go

│          │

│          ├─model

│          │  │  init.go

│          │  │

│          │  ├─grpc

│          │  │  ├─roomaggregation

│          │  │  │      aggregation.proto

│          │  │  │      base.go

│          │  │  │

│          │  │  ├─roombase

│          │  │  │      base.proto

│          │  │  │      roombase.go

│          │  │  │

│          │  │  └─roomlist

│          │  │          base.proto

│          │  │          icon.go

│          │  │

│          │  ├─hrpc

│          │  │  │  init.go

│          │  │  │

│          │  │  └─efs

│          │  │          efs.go

│          │  │          init.go

│          │  │          option.go

│          │  │

│          │  └─redis

│          │      ├─attachInfo

│          │      │      index.go

│          │      │

│          │      ├─outing

│          │      │      index.go

│          │      │

│          │      ├─roomcity

│          │      │      roomcity.go

│          │      │

│          │      └─roomjump

aluckdog
浏览 149回答 2
2回答

斯蒂芬大帝

存储库中的每个模块都单独存储在模块缓存中。根据设计,子目录中存在文件会导致整个子树完全从外部模块中修剪出来。go.mod如果您确实需要父目录中的模块可以访问 中的单个文件,则可以:tpl/api_new删除内部文件和文件,将源文件全部放在同一个模块中,或者go.modgo.sum从模块中的某个包(可能是内部包)导出数据,并将该包导出到父目录模块中,以便以编程方式访问该数据。embed.FS…/tpl/api_newimport

繁华开满天机

我还可以做些什么来嵌入go.mod和go.sum?不。
随时随地看视频慕课网APP

相关分类

Go
我要回答