您的位置:首页 > 游戏 > 游戏 > 权威发布红底图片_网站代码复制_河南seo外包_北京seo排名公司

权威发布红底图片_网站代码复制_河南seo外包_北京seo排名公司

2025/2/24 4:02:12 来源:https://blog.csdn.net/shimly123456/article/details/142640339  浏览:    关键词:权威发布红底图片_网站代码复制_河南seo外包_北京seo排名公司
权威发布红底图片_网站代码复制_河南seo外包_北京seo排名公司

go 语言多文件协作有三种方式:
1.同一文件夹下,同时编译运行多个 go 文件
2.使用 go.mod 配置项目结构,把不同文件分在不同包里
3.把一部分文件编译成动态库 .so 文件,然后一个 main 程序加载调用他们


task1: 同一文件夹下,同时编译运行多个 go 文件

main.go 内容如下:

package mainfunc main() {PrintHello() // 调用函数
}

print.go 内容如下:

package mainimport "fmt"// PrintHello 打印 "Hello, World!"
func PrintHello() {fmt.Println("Hello, World!")
}

运行方式如下(不编译)

go run main.go print.go

构建运行方式如下:

go build main.go print.go 
./main

task2: 使用 go.mod 配置项目结构,把不同文件分在不同包里

go.mod 像下面这样写

module type2_projectgo 1.15

位于 main 文件夹的 main.go

package mainimport "type2_project/printHello"func main() {printHello.PrintHello() // 调用函数
}

位于 printHello 文件夹的 print.go

package printHelloimport "fmt"// PrintHello 打印 "Hello, World!"
func PrintHello() {fmt.Println("Hello, World!")
}

运行方式:

go run main/main.go

也可以在其它文件夹下运行下面的命令来构建 main 可执行文件,但不能在当前目录构建,因为当前目录已经有个子目录名为 main,会造成名字冲突

go build main.go

task3: 把一部分文件编译成动态库 .so 文件,然后一个 main 程序加载调用他们

首先是 print.go 如下写

package mainimport "fmt"// PrintHello 打印 "Hello, World!"
func PrintHello() {fmt.Println("Hello, World!")
}

接着是 main.go 如下写

package mainimport ("plugin""log"
)func main() {// 加载插件p, err := plugin.Open("print.so")if err != nil {log.Fatal(err)}// 查找 PrintHello 函数symbol, err := p.Lookup("PrintHello")if err != nil {log.Fatal(err)}// 将 symbol 转换为函数类型并调用printHello := symbol.(func())printHello()
}

运行的方式如下:
1.把 print.go 编译成动态库

go build -buildmode=plugin print.go
go run main.go

这样就能正确运行了


版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com