Go语言学习笔记——Golang 1.18新特性工作区workspace

  • Post author:
  • Post category:golang





Golang 1.18新特性工作区workspace



需求分析

加入现在我们把一个大的项目分成了两个项目,一个项目是基础模块,用来实现项目的公用功能。第二个项目要依赖第一个项目,注意:这里提到的是项目,而不是模块。解决方法有二:

  1. 把第一个项目创建好,提交到github,第二个项目使用 go get 下载。
  2. 第二个就是我们今天提到的使用Golang1.18里面的新功能workspace。

第一种方法有一个缺陷就是,如果我们频繁的修改代码,那么第二个项目就要不停的更新,否则版本就不是最新的。而第二个方法就没有这个问题,项目可以在本地依赖。


注意:方法二功能需要Go版本是1.18以上!!!



实现步骤

  1. 创建一个工作区目录。例如:

    myworkspace

  2. 使用vscode在当前工作区目录打开,

    code .

  3. 创建一个文件夹

    common

  4. 在该文件下面初始化项目,

    go mod init common

  5. 在该文件夹中创建一个

    common.go

    文件,内容如下:

    package common
    
    import "fmt"
    
    func Dosomething() {
    	fmt.Println("do something...")
    }
    


  6. myworkspace

    文件夹中再创建一个文件夹,

    myproject_1



  7. myproject_1

    中初始化项目,

    go mod init myproject_1

  8. 在该项目中创建一个

    main.go

    文件,内容如下:

    package main
    
    import "common"
    
    func main() {
    	common.Dosomething()
    }
    // package common is not in GOROOT
    

    这种情况下是不能导入包的,因为是两个项目里面,而不是同一个项目的两个模块。



  9. myworkspace

    目录下执行如下命令:

     go work init .\common\
    

    执行完该命令,会生成一个

    go.work

    文件,内容如下:

    go 1.18
    
    use .\common\
    
  10. 再执行如下命令:

    go work use .\myproject_1\
    

    执行完该命令,

    go.work

    文件会更新,内容如下:

    go 1.18
    
    use (
    	./myproject_1
    	.\common\
    )
    
  11. 现在我们再来执行

    main.go

    ,就可以正常使用common项目下的函数了

    [Running] go run "e:\golang开发学习\myworkspace\myproject_1\main.go"
    do something...
    
    [Done] exited with code=0 in 2.632 seconds
    



版权声明:本文为qq_39280718原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。