Go中的包选择

时间:2013-09-13 15:26:24

标签: go

我正在尝试编写一个从数据库中提取状态的应用程序,但我似乎陷入了一种非常基本的语言原则。我编写了程序,但由于错误use of package time not in selector而无法编译。

一个非常基本的例子(来自play.golang.org自己的测试环境)

package main

import (
    "fmt"
    "time"
)

func main() {
    s_str := time.Now()
    fmt.Println( printT(s_str) )
}

func printT(t time) time {
    return t.Add(100)
}

不幸的是,我发现在线文档和helpdocs有点想要。我的理解是import语句应该包含整个程序的库,就像在C ++中一样吗?

1 个答案:

答案 0 :(得分:24)

您必须使用您在导入中为包提供的名称为导入的类型或变量添加前缀(此处使用默认名称,即“time”)。这就是你为函数Now所做的,但你也必须为类型做。

因此类型不是time而是time.Time(即:在您导入的名称为"time"的包中声明的类型Time。 / p>

将您的功能更改为

func printT(t time.Time) time.Time {
    return t.Add(100)
}

对于您的第二个问题:不,import语句不包含整个程序的库,但仅包含当前文件。