在戈朗,C++的using some_namespace::object等效值是什么?
根据问题这里,我可以在下面的声明中得到using namespace common:
import (
  . "common"
)但这将导入整个命名空间。现在我只想使用,比如platform定义,类似于using common::platform
Go中是否有类似的内容,这样我就不必一直输入common.platform了吗?
发布于 2016-08-12 05:52:43
就像其他人说的,围棋是不可能的。在Go中,您导入包,而不是从包中导入函数或类型。
请注意,如果您创建一个辅助包,您可以很容易地实现您想要的结果。
假设您只想“使用”fmt.Println()和fmt.Printf()函数。创建一个助手包:
package helper
import "fmt"
func Println(a ...interface{}) (n int, err error) {
    return fmt.Println(a...)
}
func Printf(format string, a ...interface{}) (n int, err error) {
    return fmt.Printf(format, a...)
}在需要C++的“使用”功能的地方,使用点.导入。
import . "helper"
func Something() {
    Println("Hi")
    Printf("Using format string: %d", 3)
}结果是,只有helper包的导出标识符才在作用域中,而不是来自fmt包的其他标识符。当然,您也可以使用这个单一的helper包从fmt以外的包中提供函数。helper可以导入任何其他包,并有一个“代理”或委托函数来发布它们的功能。
就我个人而言,我不觉得有必要这样做。我只需导入fmt并使用fmt.Println()和fmt.Printf()调用其函数。
https://stackoverflow.com/questions/38904423
复制相似问题