关于学习 go 语言不解之处请教各位大佬

14 天前
 Just4L

鉴于当前形势,加之对云原生技术的爱好,所以想从用一些云原生组件到开发一些 operator ,这就要用到 go 语言了。 所以想请教一下大佬们,现在开发 go 语言,都用什么版本比较好啊,就像 java 的话 java8 用的人比较多一样,go 有这个说法么? 另外有啥好的学习资料可以推荐么? 抱拳.jpg

4644 次点击
所在节点    Go 编程语言
50 条回复
wwqgtxx
13 天前
@Seves 这么说也确实没问题,我这边的实测是 1.21.3 编译出来的 386/amd64 产物均可以在 win7 64bit 下正常运行,去除#34 提到的指定 commit 的 go1.21 和 go1.22 也都可以在 win7 64bit 下正常运行
至于 32 位系统下为何不行,但是在 64 位系统下 wow64 可以的问题我没有深入测试过,能找到的资料也非常有限,一直没人深究到底是哪个 commit 的改动引发了这个不兼容
lysShub
13 天前
@Seves 我现在就有个 1.22 的跑在 Windows Server 2012 上
wwqgtxx
11 天前
@Seves #38 我手动装了一下 win7 32 位版本的系统,和你的版本一样也是 7601 ,但是我安装了 kb4474419 ,之后运行 golang1.21 版本编译出来的文件一切正常,你也可以测试一下我 patch 后的 1.22 编译出来的二进制兼容性如何
https://github.com/MetaCubeX/mihomo/releases/download/v1.18.5/mihomo-windows-386-v1.18.5.zip
UxwVI042kEc5pNx6
11 天前
@wwqgtxx #43 也报错,但报的是另一个 dll 没有找到:

wwqgtxx
11 天前
@Seves 你这个报错感觉是系统有很多补丁没打吧,能看一下你系统上 C:\Windows\System32\advapi32.dll 的详细信息么
wwqgtxx
11 天前
@Seves #44 我再次重新安装了一次 win7 ,在没有安装 kb4474419 的时候出现了和你一样的报错,安装后即可正常启动了
https://www.catalog.update.microsoft.com/search.aspx?q=kb4474419
实际上很多非 golang 程序的安装也必须要建立在安装 kb4474419 之后(如 vmtools ),具体原因还需要探究
UxwVI042kEc5pNx6
11 天前
@wwqgtxx #46 我最后安装的补丁是 KB2534111 ,安装 KB4474419 后确实可以运行了。🤙🤙🤙
nextvay
11 天前
1.8 以上吧,泛型 挺好的,适合封装些小工具
wwqgtxx
11 天前
@Seves 找到原因了
https://github.com/golang/go/commit/a17d959debdb04cd550016a3501dd09d50cd62e7
根据 msdn 文档:
Windows 7 、Windows Server 2008 R2 、Windows Vista 和 Windows Server 2008:LOAD_LIBRARY_SEARCH_标志在安装了 KB2533623 的系统上可用。 若要确定标志是否可用,请使用 GetProcAddress 获取 AddDllDirectory 、RemoveDllDirectory 或 SetDefaultDllDirectories 函数的地址。 如果 GetProcAddress 成功,LOAD_LIBRARY_SEARCH_ 标志可以与 LoadLibraryEx 一起使用。
所以在缺乏补丁的 win7 上就会出现找不到系统 dll 的问题
kevinpendragon
6 天前
版本别太老比如 1.9 这种,1.11 之后的区别不是很大

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1050717

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX