当前位置: 首页 > 面试题库 >

在go中导入包

汝和裕
2023-03-14
问题内容

用go编程语言,为什么在导入软件包后,我仍然必须在该软件包中的方法前面加上软件包名称?

import "io/ioutil"

func main() { 
    content, err = iotuil.ReadFile("somefile.txt")
    // etc..
}

这不是多余的吗?例如,在Java中,无需导入文件就可以执行Files.readAllLines等操作。


问题答案:

我想这并不能真正回答您的问题,但是如果您愿意,您实际上可以在不显式说明软件包的情况下调用方法-
只需.在名称前面添加一个即可(但不建议这样做;请参见下文):

package main

import (
  . "fmt"
  . "io/ioutil"
)

func main () {
  content, err := ReadFile("testfile")
  if err != nil {
    Println("Errors")
  }
  Println("My file:\n", string(content))
}

注意下面@ JIMT的评论-这种做法是
建议的测试之外,因为它可能会导致名称冲突与将来的版本。另外,绝对同意@DavidGrayson的观点,即更好地阅读/查看事物的来源。



 类似资料:
  • 问题内容: 假设您在拥有一个存储库,然后将其分叉到。您想使用fork而不是主仓库,因此您需要 现在,此存储库中的所有导入路径都将“断开”,这意味着,如果存储库中有多个通过绝对URL相互引用的包,则它们将引用源而不是派生。 有更好的方法手动将其克隆到正确的路径吗? 问题答案: 处理拉取请求 将存储库派生到 下载原始代码: 在那里: 启用上传到您的fork: 将您的更改上传到您的仓库: http://

  • 问题内容: 我是新手,正在研究要本地化的示例代码。 在原始的导入语句中,它是: 现在我已经和包 所以我将import语句转换为: 但是当我运行时,出现以下错误: 另外,当我在导入语句中使用and 代替and 时,得到: 我怎样才能解决这个问题? 问题答案: 好吧,我发现了问题所在。基本上,导入的开始路径是 所以我只需要在包名称前面添加,即导入应该是:

  • 问题内容: 因此,我有一个要解决的导入周期。我有以下模式: 总体思路是,操作是在视图上执行的,并由视图执行: 然后在view.go中调用它: 但这会导致一个周期,因为View依赖于Action包,反之亦然。我该如何解决这个周期?有其他方法可以解决此问题吗? 问题答案: 导入周期表明设计存在根本错误。从广义上讲,您正在查看以下内容之一: 您正在混合担忧。也许根本不应该访问,或者不应该负责更改视图名称

  • 问题内容: New Go程序员在这里-如果这是破旧的领域,我深表歉意,但是我的Google搜索并没有找到我想要的答案。 简短版本:作为核心Go项目外部的程序员,我是否可以强制使用特定名称导入我的软件包。如果是这样,怎么办? 较长版本:我最近尝试从以下GitHub存储库中安装软件包,其中包含以下内容 程序包已正确下载到我的工作区中,但是当我尝试导入它时,出现以下错误 $ go运行main.go ma

  • 问题内容: 如何在Golang + GAE中导入本地软件包? 我想要这样的事情: 清单my_app.go: package1.go的清单: 在这种情况下,我有一个错误,例如: 感谢帮助。 问题答案: 您需要链接或将软件包复制到应用程序目录。 相对于应用程序目录根目录的路径应与导入路径匹配。 要使用package1,您应该将应用程序目录配置为如下所示: 来自https://groups.google

  • 主要内容:默认导入的写法,导入包后自定义引用的包名,匿名导入包——只导入包但不使用包内类型和数值,包在程序启动前的初始化入口:init,理解包导入后的init()函数初始化顺序可以在一个 Go语言源文件包声明语句之后,其它非导入声明语句之前,包含零到多个导入包声明语句。每个导入声明可以单独指定一个导入路径,也可以通过圆括号同时导入多个导入路径。要引用其他包的标识符,可以使用 import 关键字,导入的包名使用双引号包围,包名是从 GOPATH 开始计算的路径,使用 进行路径分隔。 默认导入的写