水木社区手机版
首页
|版面-Go编程语言(Golang)|
新版wap站已上线
返回
首页
|
上页
|
下页
|
尾页
|
2/3
|
转到
主题:go的初始化顺序,竟然没有固定的顺序?
10楼
|
feng321
|
2021-07-26 10:54:21
|
只看此ID
程序可以运行。关键是多运行几次,每次的结果 顺序都不一样。你多运行几次看看
【 在 StephenLee 的大作中提到: 】
: third_go_modules如果是主包的话,go.mod应该在主包的目录,跟src平级。谨慎怀疑这里混用了go module和go path。
: :
: - 来自「最水木 for iPhone13,2」
--
FROM 120.242.252.*
11楼
|
StephenLee
|
2021-07-26 10:55:37
|
只看此ID
我是100% 子模块先初始化
? tree
.
├── geometry.go
├── go.mod
└── rectangle
└── rectprops.go
1 directory, 3 files
// go.mod
module smth
go 1.15
// geometry.go
package main
import (
"fmt"
"log"
"smth/rectangle" // 导入自定义包
)
...
【 在 feng321 的大作中提到: 】
: 关键是输出顺序不固定,我偶尔也有你这样的输出
: main package initialized
: rectangle package initialized
: ...................
--
FROM 115.193.174.*
12楼
|
StephenLee
|
2021-07-26 10:59:42
|
只看此ID
go init 的规则虽然有点绕,但是确定的,按依赖关系最底层的init先执行,然后层层向上,不会出现随机。
go env -w GO111MODULE=on
设置默认使用 go module
【 在 feng321 的大作中提到: 】
: 程序可以运行。关键是多运行几次,每次的结果 顺序都不一样。你多运行几次看看
: [upload=1][/upload]
--
FROM 115.193.174.*
13楼
|
feng321
|
2021-07-26 11:03:59
|
只看此ID
你用我的目录结构试试?反正我的输出顺序就是随机,QQ群里也说了类似“init输出随机”的
【 在 StephenLee 的大作中提到: 】
: go init 的规则虽然有点绕,但是确定的,按依赖关系最底层的init先执行,然后层层向上,不会出现随机。
: go env -w GO111MODULE=on
: 设置默认使用 go module
: ...................
--
FROM 120.242.252.*
14楼
|
StephenLee
|
2021-07-26 11:25:06
|
只看此ID
你看下上面回复你了,你的目录结构有问题,go.mod 应该跟 src 平级。当前 go.mod 应该没有生效,可能是GO_PATH给你兜底了。
坚持现在的目录结构是为什么
【 在 feng321 的大作中提到: 】
: 你用我的目录结构试试?反正我的输出顺序就是随机,QQ群里也说了类似“init输出随机”的
: [upload=1][/upload]
--
FROM 115.193.174.*
15楼
|
feng321
|
2021-07-26 11:31:13
|
只看此ID
你仔细看我的目录结构,go.mod 是跟src平级啊。你的是什么样的?
【 在 StephenLee 的大作中提到: 】
: 你看下上面回复你了,你的目录结构有问题,go.mod 应该跟 src 平级。当前 go.mod 应该没有生效,可能是GO_PATH给你兜底了。
: 坚持现在的目录结构是为什么
:
--
FROM 120.242.252.*
16楼
|
StephenLee
|
2021-07-26 11:41:59
|
只看此ID
你第一张图贴出来的可不是这样,已经不太想再回答你了。
go的包管理历史上确实有点乱,init机制也确实隐晦,但是你的这个还是想当然了,不了解go module,我也经历过,所以才回复的。
go.mod 放对地方,运行不会有问题,没有随机
$ tree
.
├── go.mod
└── src
├── geometry.go
└── rectangle
└── rectprops.go
2 directories, 3 files
$ go run src/geometry.go
rectangle package initialized
main package initialized
Geometrical shape properties
area of rectangle 42.00
diagonal of the rectangle 9.22 %
【 在 feng321 的大作中提到: 】
: 你仔细看我的目录结构,go.mod 是跟src平级啊。你的是什么样的?
: [upload=1][/upload]
--
FROM 115.193.174.*
17楼
|
StephenLee
|
2021-07-26 11:48:21
|
只看此ID
改成跟你的一样了,也没发现有什么问题
.
├── go.mod
└── src
└── geometry
├── geometry.go
└── rectangle
└── rectprops.go
【 在 feng321 的大作中提到: 】
: 你仔细看我的目录结构,go.mod 是跟src平级啊。你的是什么样的?
: [upload=1][/upload]
--
FROM 115.193.174.*
18楼
|
feng321
|
2021-07-26 12:00:50
|
只看此ID
估计你用的linux,我用的windows吧。我的go.mod一直和src在同一目录。你说的“第一张图”是指几楼的图?
【 在 StephenLee 的大作中提到: 】
: 你第一张图贴出来的可不是这样,已经不太想再回答你了。
: go的包管理历史上确实有点乱,init机制也确实隐晦,但是你的这个还是想当然了,不了解go module,我也经历过,所以才回复的。
: go.mod 放对地方,运行不会有问题,没有随机
: ...................
--
FROM 120.242.252.*
19楼
|
StephenLee
|
2021-07-26 12:26:57
|
只看此ID
一楼的图呀。而且也不觉得这是windows下的go的问题。
初始化顺序属于语言的根本了,容许随机没法玩。
你听的说法,估计是同一个目录(包)下面,多个文件都有init的顺序问题,按文件名排序,不是太好,所以一般会建议不要在一个包里写多个init。
有依赖关系的两个包,底层先初始化
【 在 feng321 的大作中提到: 】
: 估计你用的linux,我用的windows吧。我的go.mod一直和src在同一目录。你说的“第一张图”是指几楼的图?
: 【 在 StephenLee 的大作中提到: 】
: : 你第一张图贴出来的可不是这样,已经不太想再回答你了。
: ....................
- 来自「最水木 for iPhone13,2」
--
FROM 115.193.174.*
首页
|
上页
|
下页
|
尾页
|
2/3
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版