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

Go语言包结构

壤驷文华
2023-03-14
问题内容

我正在尝试学习Go并遵循现有的约定,但是,作为每个约定,您都需要先了解它们,然后才能很好地使用它们,经过一些研究,我没有找到以下问题的确切答案:

我已经在自己的内部建立了$GOPATH一个类似以下结构的项目:

$GOPATH/
  github.com/
    username/
      projectname/
        main.go
        numbers/
          rational.go
          real.go
          complex.go

我的主要是:

package main

import(
"fmt"
"./numbers"
)

func main() {
    fmt.Println(numbers.Real{2.0})
}

因此,问题是:

  1. 我读到我需要package.go在每个package文件夹中都有一个文件,对吗?

  2. 如果是这样,在内部numbers.go,我将如何导入rational.goreal.go以及complex.go

  3. 然后,是否可能会有类似的内容:

        // real.go
    package numbers

    type Real struct {
        Number float64
    }

…并且主要是做fmt.Println(numbers.Real{2.0})什么的?


问题答案:

首先:您的安装程序src缺少文件夹:应该是$ GOPATH / src /github.com / …”

第二:不要使用相对进口。只是不要这样做。导入包裹编号,例如import "github.com/username/projectname/number"

对您的问题:

  1. 否。如果您的文件夹中有Go文件,它们会合并到一个程序包中,但是您不必强迫将程序包放入所有文件夹中。

  2. 所有文件rational.gocomplex.go并且real.go通常会下手package numbers。都是包号的一部分,您 包括文件,而是包。当前软件包无需导入。所以不行。



 类似资料:
  • 在我们开始学习 Go 编程语言的基础构建模块前,让我们先来了解 Go 语言最简单程序的结构。 Go Hello World 实例 Go 语言的基础组成有以下几个部分: 包声明 引入包 函数 变量 语句 & 表达式 注释 接下来让我们来看下简单的代码,该代码输出了"Hello World!": package main import "fmt" func main() { /* 这是我的

  • 实际开发中,对于超出 int64 或者 uint64 类型的大数进行计算时,如果对精度没有要求,使用 float32 或者 float64 就可以胜任,但如果对精度有严格要求的时候,我们就不能使用浮点数了,因为浮点数在内存中只能被近似的表示。 Go语言中 math/big 包实现了大数字的多精度计算,支持 Int(有符号整数)、Rat(有理数)和 Float(浮点数)等数字类型。 这些类型可以实现

  • Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。 结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。 结构体表示一项记录,比如保存图书馆的书籍记录,每本书有以下属性: Title :标题 Author : 作者 Subject:学科 ID:书籍ID 定义结构体 结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据

  • 主要内容:在闭包内部修改引用的变量,示例:闭包的记忆效应,示例:闭包实现生成器Go语言中闭包是引用了自由变量的函数,被引用的自由变量和函数一同存在,即使已经离开了自由变量的环境也不会被释放或者删除,在闭包中可以继续使用这个自由变量,因此,简单的说: 函数 + 引用环境 = 闭包 同一个函数与不同引用环境组合,可以形成不同的实例,如下图所示。 图:闭包与函数引用 一个函数类型就像结构体一样,可以被实例化,函数本身不存储任何信息,只有与引用环境结合后形成的闭包才具有“记忆性”,

  • 主要内容:for 中的初始语句——开始循环时执行的语句,for 中的条件表达式——控制是否循环的开关,for 中的结束语句——每次循环结束时执行的语句与多数语言不同的是,Go语言中的循环语句只支持 for 关键字,而不支持 while 和 do-while 结构,关键字 for 的基本使用方法与C语言和 C++ 中非常接近: 可以看到比较大的一个不同在于 for 后面的条件表达式不需要用圆括号 括起来,Go语言还进一步考虑到无限循环的场景,让开发者不用写无聊的  和 ,而直接简化为如下的写法:

  • 主要内容:举例,特殊写法在Go语言中,关键字 if 是用于测试某个条件(布尔型或逻辑型)的语句,如果该条件成立,则会执行 if 后由大括号 括起来的代码块,否则就忽略该代码块继续执行后续的代码。 如果存在第二个分支,则可以在上面代码的基础上添加 else 关键字以及另一代码块,这个代码块中的代码只有在条件不满足时才会执行,if 和 else 后的两个代码块是相互独立的分支,只能执行其中一个。 如果存在第三个分支,则可以使