在go编程语言中,为什么在导入包之后我仍然必须在包中使用包名称作为方法的前缀?
即
import "io/ioutil"
func main() {
content, err = iotuil.ReadFile("somefile.txt")
// etc..
}
Run Code Online (Sandbox Code Playgroud)
这不是多余的吗?例如,在Java中,您可以在不导入文件的情况下执行Files.readAllLines等操作.
Roc*_*key 48
我想这并没有真正回答你的问题,但如果你愿意,你可以实际调用方法而不明确说明包 - 只需.
在名称前导入(但不建议这样做;见下文):
package main
import (
. "fmt"
. "io/ioutil"
)
func main () {
content, err := ReadFile("testfile")
if err != nil {
Println("Errors")
}
Println("My file:\n", string(content))
}
Run Code Online (Sandbox Code Playgroud)
注意@jimt的评论如下 - 在测试之外不建议这种做法,因为它可能导致与未来版本的名称冲突.此外,绝对同意@DavidGrayson更好的阅读/看到事物的来源.
小智 32
您可以导入和重命名包名称,例如:
import (
. "fmt" // no name, import in scope
File "io/ioutil" // rename ioutil to File
_ "net" // net will not be available, but init() inside net package will be executed
)
Run Code Online (Sandbox Code Playgroud)
另请参见https://golang.org/ref/spec#Import_declarations
我不能真正代表Go语言的设计者,但很高兴能够快速告诉您调用方法的位置.很高兴看到您在文件顶部使用的所有软件包的列表.这不是多余的.
正如你所说,Java要求你说Files.readAllLines
并且同样需要你写ioutil.ReadFile
.
归档时间: |
|
查看次数: |
14811 次 |
最近记录: |