当前位置:首页 > 数码 > Go-个性-透明文件夹-必要性及最佳通常 (go个性签名)

Go-个性-透明文件夹-必要性及最佳通常 (go个性签名)

admin6个月前 (05-10)数码39

在Go言语中,咱们普通会用模块(Module)和包(Package)来组织咱们的名目、库的目录和代码结构。这也是官网所介绍的。

当天给大家分享一个面向包这块的新提案,看看能否适宜加进Go个性中?看看社区里不同人的想法。

前置常识:模块和包

详细来讲,模块(Module)就是gomod的运行。咱们最常接触到的是以下命令:

mkdirmy-projectcdmy-projectgomodinit.com/eddycjy/my-project

在口头了gomodinit后会生成go.mod文件,如下所示:

//go.modmodulegithub.com/eddycjy/my-projectgo1.21.1

这就是这个名目的模块。

对应到包(Package)中,会愈加的间接和显性。咱们普通会创立相似如下的目录结构:

<my-project>-<cli>--cli.go-<internals>--internals.go--go.mod--mn.go

Go文件中的packagename,存在明白的商定俗成的规范,须要和目录称号坚持分歧。

例如:

//internals.gopackageinternalsimport"fmt"funcHello(){fmt.Println("你好,煎鱼!")}

假设在其余中央中导入该包,则为:

import(..."github.com/eddycjy/my-project/internals")

以上就是模块和包的基础前置常识。咱们接上去正式进入提案的正题。

提案:透明文件夹

针对Go程序的代码组织结构治理,最近社区有个同窗提出了一个新提案:

在Go里文件夹自动与包(Package)的相关是划等号的。只管这很繁难,然而提案作者反应: 在某些状况下,咱们须要经过文件夹来成功纯正的组织和可读性目的,而不想引入新的包

为此提出了透明文件夹的概念,经过经常使用诸如Next.js运行程序路由器中看到的或之类的语义来示意。

这些文件夹可以在不创立新软件包的状况下组织软件包内的文件。它们将与软件包的根目录坚持相关。

例子如下:

mymain.gomyTypes.go(routes)handleRoot.gohandleMultipart.go...dbconnect.godbTypes.go(auth)strategy1.gostrategy2.go...

可以看到这个例子,他经常使用的形式来示意透明文件夹。例如:和,这样他就不须要再细分不同的packagename,一致用myapp和db的包名就能启动援用。

繁难来讲,该提案的成功形式是:经过将工程中packagename和实体文件夹目录的作用宰割开,目的是:提供一种纯正的代码组织形式。

一些争议

其实相似的场景诉求,我有一个好友曾经听几个共事吐槽过。但普通会是在比拟大的Go名目中,例如出现以下场景:

myappservicea-serviceb-servicec-service...

会以为这样package切割的比拟碎,然而不辨别开。多了后在代码结构上又很容易冗杂化。所以会想有一种纯碎的代码组织形式。

争议也是有不少的。由于他对言语的ROI并不是太高,变化的物品(例如:工具、IDE、tests等)会比拟多。

只有将文件命名为:aaa-foo.goaaa-bar.gobbb-foo.gobbb-bar.go,而不是aaa/foo.goaaa/bar.gobbb/foo.gobbb/bar.go。也能到达相似的成果。

也有示意减少透明子文件夹会让所有变得愈加复杂,却没有任何好处。把文件放在它们应该在的中央就可以了。如今曾经在其余言语中看到过这种代替方法,很蹩脚。

总结

这个提案自身的登程点很经常出现,由于packagename和代码目录结构绑定了,会造成在设计代码结构时会有些受限,最终受此疏导拆package来构成结构化。

假设自觉的减少透明文件夹,反而会出现一个难堪的疑问。由于Go言语在这块是十分间接的,减少了这类形式,大家反而会没法笃定,要去看看名目的代码结构能力确定。

我以为反而会造成可读性会有所降低。


go个性签名

蓝色文件夹和透明文件夹哪个好

蓝色文件夹好。 1、蓝色文件夹:蓝色是一种常见的颜色,通常被认为是一种稳重、成熟和优雅的颜色,可以帮助隐藏文件,避免文件被意外查看,从而保护隐私,而透明文件夹不具备这种优势。 2、透明文件夹:做工质感很棒,尺寸符合a4纸的大小,非常非常的耐用,产品设计的也很好。

给文件夹加密、防复制、防移动,哪个软件最好?

高强度文件夹加密大师 V9000 Build 1004 绿色版《高强度文件夹加密大师》一款专业的文件和文件夹加密器。 绝不是简单的隐藏文件夹!!! 这款文件加密软件具有界面漂亮友好、简单易用、功能强大和兼容性好等特点。 经它加密的文件夹可以移动到其他电脑上使用。 而且支持临时解密的功能,让您不用每次都重新加密! 并且它不受系统影响,即使重装、Ghost还原、系统盘格式化,也依然可以照样使用。 它支持两种加密方式:“本机加密”和“移动加密”。 其中的“移动加密”是本软件原创的加密方式 ,使用这种方式加密的文件夹可以随意的移动到任何电脑上,包括未安装本软件的电脑上 使用的加密方式安全性极高,不仅仅是简单的文件夹隐藏文件隐藏。 值得一提的是它的加密速度极快,上百 G 的数据仅需1秒钟完成。 没有大小限制。 使用了高强度的加密算法,给文件夹加密码,让您的文件夹更安全。 不仅可以将您的文件夹彻底隐藏起来,更可以锁定您的软盘、硬盘等所有驱动器!方便,安全! 另外它与系统结合的天衣无缝,在电脑中任何一个文件夹上右键即可加密。 设置运行密码:让软件只允许您一人使用。 强大的防删除功能:让破坏者无从下手。 本软件为绿色软件,安装卸载100% 无残留。

免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。

标签: Go

“Go-个性-透明文件夹-必要性及最佳通常 (go个性签名)” 的相关文章

Go-言语中并发的弱小效劳 (go语言语法很奇怪啊)

Go-言语中并发的弱小效劳 (go语言语法很奇怪啊)

施展效率和照应才干 并发是现代软件开发中的一个基本概念,它使程序能够同时口头多个义务,提高效率和照应才干。在本文中,咱们将讨论并发在现代软件开发中的关键性,并深化了解Go处置并发义务的共同...

etcd-的依赖问题最终得到解决-Go (etcd的英文全称)

etcd-的依赖问题最终得到解决-Go (etcd的英文全称)

几年前,我经常接触到一组微服务相关组件:gRPC、gRPC 网关、etcd、Protobuf 和 protoc-gen-go。一开始,它们都能很好地协同工作,并且随着新版本的发布而持续更新。...

内存优化与渣滓搜集-深化探求优化程序性能的最佳通常-Go (内存优化与渣子有关吗)

内存优化与渣滓搜集-深化探求优化程序性能的最佳通常-Go (内存优化与渣子有关吗)

Go提供了智能化的内存治理机制,但在某些状况下须要更精细的微调从而防止出现OOM失误。本文将讨论Go的渣滓搜集器、运行程序内存优化以及如何防止OOM(Out-Of-Memory)失误。 Go...

的原因-Go-Map-语言不支持并发读写 (的原因英语)

的原因-Go-Map-语言不支持并发读写 (的原因英语)

在Go语言的设计中,为了防止数据竞态,不同于一些其他语言,map并没有提供内置的锁机制。这样设计的目的是为了鼓励开发者使用更加精细的同步措施,以适应不同的并发场景。 Map的数据结构...

内存效率-多用途-语言中使用切片代替数组的优点-动态大小-Go (内存使用效率)

内存效率-多用途-语言中使用切片代替数组的优点-动态大小-Go (内存使用效率)

引言 在 Go 语言中,数组是一种固定长度的数据结构,而切片则是一种可变长度的数据结构。虽然数组和切片都可以存储相同类型的数据元素,但切片在使用上有其独到的优势,本文将通过介绍切片的特性来解释为...

14条超乎想象的Go接口最佳实践

14条超乎想象的Go接口最佳实践

近年来,越来越多的开发者开始关注 Go 语言,它以其高效、简洁和高并发性而闻名。在 Go 语言中,接口是一个非常强大的特性,它可以帮助我们定义和实现不同的行为。本文将介绍 Go 语言中接口设计的一...

并非你构想得那么便捷-Go中的switch的六种用法 (并非你构想得到的成语)

并非你构想得那么便捷-Go中的switch的六种用法 (并非你构想得到的成语)

Go以其繁复而著称,但并不是每团体都相熟这种言语中switch语句的多样性。首先,假设你对Go的switch语句还不相熟,它或许与其余言语相比有些不同。 上方是一个便捷的示例来展现它是什么...

b-Go-成功线程安保的缓存-sync.Map-中经常使用-b

b-Go-成功线程安保的缓存-sync.Map-中经常使用-b

缓存是提升现代运行程序性能的关键方面。它准许您存储并极速检索低廉操作的结果或经常访问的数据,缩小了重复从新计算或失掉数据的须要。在本文中,咱们将讨论如何经常使用sync.Map包在Go中成功线程安...