gpt4 book ai didi

go - 避免在 go 包和结构名称中卡顿的方法?

转载 作者:IT王子 更新时间:2023-10-29 00:35:16 25 4
gpt4 key购买 nike

我最近一直在做一些围棋编程,同时试图关注 Effective Go风格指南,我有时发现在命名包、接口(interface)和结构时很难避免口吃。

举个例子。
我可能有一个 console 包,其中包含一个 Console.go 文件,其中包含一个 Console 接口(interface)、一个 console 结构和一个新的功能。

//console/Console.go
package console

type Console interface {
Print(s String)
}

type console struct {
....
}

func (c *console) Print(s String){
....
}

func New() Console{
return &console{}
}

现在,当我在某个地方使用它时,我最终会在所有地方使用 console.Console 类型。

当我在一个包中有两个或多个结构时,我最终会得到类似的东西con := console.NewConsole()

我不介意拥有大而扁平的包结构,但我确实希望尽可能让我的代码井井有条。我同意 IO.Reader 和 IO.Writer 的想法,但是当包与东西相同但仍需要分开时该怎么办。 (是的,我知道给定的示例可能是 Console.Writer,但让我们假装它完全不同)

所以我的问题是:这种口吃效应是我应该担心的吗? (即。它是错误的形式吗?)有没有人有避免它的任何提示?

最佳答案

断断续续的类型名称通常没问题 - foo.Foo 并不罕见,因为包 foo 专用于定义类型 Foo .这绝对没有错。

你要避免的是不必要的口吃;当简单的 foo.New 足够精确时,这将是 foo.NewFoo 之类的东西,或者 foo.FooBarfoo.FooBaz 其中 foo.Barfoo.Baz 也可以正常工作。

考虑标准库的 html/template,它定义了一个类型 (template.Template) 和一个构造函数 (template.New)。

关于go - 避免在 go 包和结构名称中卡顿的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45885985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com