小编z11*_*11i的帖子

如何删除 Cargo.toml 中未使用的依赖项?

如何找出 Cargo.toml 中未使用的依赖项?我怎样才能自动删除它们?

rust rust-cargo

16
推荐指数
1
解决办法
1万
查看次数

Kotlin 测试类应该是内部的吗?

例如,当您在 IntelliJ 中为给定类生成测试类时,class Foo它将生成一个测试类internal class FooTest。为什么它默认为internal class?使用内部类作为测试类有什么好处?

我生成测试类的方法是:将光标放在类名称上Foo,按Option/Alt+ Enter,选择“创建测试”。

testing kotlin

9
推荐指数
1
解决办法
4886
查看次数

切片 vs 类型别名作为方法接收者

我有一个Foo带有方法的结构print

type Foo struct {
    Bar string
}
func (f Foo) print() {
    fmt.Println(f.Bar)
}
Run Code Online (Sandbox Code Playgroud)

如果我想打印一个切片Foo,规范的方法可能是编写一个for循环,并有一个函数来封装它:

func printFoos(fs []Foo) {
    for _, f := range fs {
        f.print()
    }
}
printFoos([]Foo{})
Run Code Online (Sandbox Code Playgroud)

来自 OOP 背景,我发现这种方法有点不吸引人。

我想做的是printFoos[]Foo

// Invalid Go code
func (fs []Foo) print() {
    for _, f := range fs {
        f.print()
    }
}
Run Code Online (Sandbox Code Playgroud)

以上不起作用,因为在 Go 中,未命名类型不能用作方法接收器,如Google Group thread 中所述

为了规避它,可以写:

type Foos []Foo
func (fs …
Run Code Online (Sandbox Code Playgroud)

methods types go

3
推荐指数
1
解决办法
280
查看次数

`strings.EqualFold` 不首先进行长度比较是否有原因?

比较不区分大小写的字符串的常见做法是首先显式检查长度:

if len(a) == len(b) && strings.EqualFold(a, b) { ... }
Run Code Online (Sandbox Code Playgroud)

这似乎是一种解决方法,因为当前的实现仅在耗尽两个输入字符串中的任何一个时才进行长度检查。

是否有理由不首先进行长度检查,无论是性能方面还是其他方面?

string unicode go

3
推荐指数
1
解决办法
125
查看次数

标签 统计

go ×2

kotlin ×1

methods ×1

rust ×1

rust-cargo ×1

string ×1

testing ×1

types ×1

unicode ×1