在Go中初始化成员时,是否可以只使用其中一个返回值?

时间:2018-02-02 22:54:17

标签: go

我理解如何在go中使用多个返回值。我进一步理解,在大多数情况下,其中一个返回是一个错误,因此忽略返回的值可能很危险。

有没有办法忽略struct initializer中的值?下面的示例不起作用,因为Split返回两个值,但我只对第一个值感兴趣。我当然可以创建一个变量但是......

someFile := "test/filename.ext"

contrivedStruct := []struct{
    parentDir string
}{
    { parentDir: filepath.Split(someFile) },
}

2 个答案:

答案 0 :(得分:2)

在Go中初始化成员时,不可能只使用其中一个返回值。

使用变量清楚地表达了您的意图。

有时感觉它可能更简洁,但Go作者更喜欢可读性而不是简洁。

或者,使用包装函数。有几个必须'标准库中的包装函数,如:template.Must

func first(args ...string) string {
    return args[0]
}

对于您的特定示例,拆分路径,请参阅filepath.Basefilepath.Dir

答案 1 :(得分:1)

不,没有办法跳过结构初始值设定项中的一个返回值。