4.4 آموزش کار با workspace

4.4 آموزش کار با workspace

با استفاده از workspace می توانید همزمان چندین ماژول در یک محل داشته باشید و هر ماژول را به راحتی مدیریت کنید و همچنین همزمان به آسانی این ماژول ها را build و اجرا کنید.

 1$ go help work
 2Work provides access to operations on workspaces.
 3
 4Note that support for workspaces is built into many other commands, not
 5just 'go work'.
 6
 7See 'go help modules' for information about Go's module system of which
 8workspaces are a part.
 9
10See https://go.dev/ref/mod#workspaces for an in-depth reference on
11workspaces.
12
13See https://go.dev/doc/tutorial/workspaces for an introductory
14tutorial on workspaces.
15
16A workspace is specified by a go.work file that specifies a set of
17module directories with the "use" directive. These modules are used as
18root modules by the go command for builds and related operations.  A
19workspace that does not specify modules to be used cannot be used to do
20builds from local modules.
21
22go.work files are line-oriented. Each line holds a single directive,
23made up of a keyword followed by arguments. For example:
24
25	go 1.18
26
27	use ../foo/bar
28	use ./baz
29
30	replace example.com/foo v1.2.3 => example.com/bar v1.4.5
31
32The leading keyword can be factored out of adjacent lines to create a block,
33like in Go imports.
34
35	use (
36	  ../foo/bar
37	  ./baz
38	)
39
40The use directive specifies a module to be included in the workspace's
41set of main modules. The argument to the use directive is the directory
42containing the module's go.mod file.
43
44The go directive specifies the version of Go the file was written at. It
45is possible there may be future changes in the semantics of workspaces
46that could be controlled by this version, but for now the version
47specified has no effect.
48
49The replace directive has the same syntax as the replace directive in a
50go.mod file and takes precedence over replaces in go.mod files.  It is
51primarily intended to override conflicting replaces in different workspace
52modules.
53
54To determine whether the go command is operating in workspace mode, use
55the "go env GOWORK" command. This will specify the workspace file being
56used.
57
58Usage:
59
60	go work <command> [arguments]
61
62The commands are:
63
64	edit        edit go.work from tools or scripts
65	init        initialize workspace file
66	sync        sync workspace build list to modules
67	use         add modules to workspace file
68
69Use "go help work <command>" for more information about a command.

پیش نیاز ها

  • برای استفاده از workspace حتما باید از نسخه 1.18 گو استفاده کنید.
  • یک ابزار ادیت برای کار باید داشته باشید
  • یک ترمینال مناسب جهت اجرا دستورات

4.4.1 ایجاد workspace #

برای ایجاد یک workspace کافیه دستور زیر را بزنید تا در محل پروژه یک فایل go.work ایجاد شود.

1$ go work init

4.4.2 افزودن ماژول به workspace #

در محل workspace یک پوشه ایجاد کنید و دستور go mod init را بزنید تا ماژول ایجاد شود و داخل این محل کدهای ماژول خود را قرار دهید. سپس با دستور go work use می توانید ماژول خود را به workspace اضافه کنید.

1go work use ./module1

زمانیکه دستور فوق را بزنید پوشه module1 که داخلش ماژول از قبل ایجاد شده به فایل go.work اضافه می شود.

حال اگر دستور زیر را بزنید می توانید آن ماژول را اگر پکیج main داشته باشد را می تواند اجرا کند :

1$ go run ./module1