当前位置: 首页 > 知识库问答 >
问题:

前端 - Go语言的模块化开发和TypeScript不一致,TypeScript是使用export 导出想要导出的类/变量/type等,但是Go是所有的模块内定义的都是公开的,别人都可以import是吗?

湛宝
2024-08-30

请问:

1、Go语言的模块化开发是否就是一个.go文件就是一个模块?还是说package xxx代表一个模块呢?

如下代码:

package conditions

import (
    "fmt"

    "k8s.io/api/core/v1"
    "k8s.io/apimachinery/pkg/api/errors"
    "k8s.io/apimachinery/pkg/runtime/schema"
    "k8s.io/apimachinery/pkg/watch"
)


var ErrPodCompleted = fmt.Errorf("pod ran to completion")


func PodRunning(event watch.Event) (bool, error) {
    switch event.Type {
    case watch.Deleted:
        return false, errors.NewNotFound(schema.GroupResource{Resource: "pods"}, "")
    }
    switch t := event.Object.(type) {
    case *v1.Pod:
        switch t.Status.Phase {
        case v1.PodRunning:
            return true, nil
        case v1.PodFailed, v1.PodSucceeded:
            return false, ErrPodCompleted
        }
    }
    return false, nil
}

func PodCompleted(event watch.Event) (bool, error) {
    switch event.Type {
    case watch.Deleted:
        return false, errors.NewNotFound(schema.GroupResource{Resource: "pods"}, "")
    }
    switch t := event.Object.(type) {
    case *v1.Pod:
        switch t.Status.Phase {
        case v1.PodFailed, v1.PodSucceeded:
            return true, nil
        }
    }
    return false, nil
}

2、Go语言的模块化开发和TypeScript不一致,TypeScript是使用export 导出想要导出的类/变量/type等,但是Go是所有的模块内定义的都是公开的,别人都可以import是吗?

共有1个答案

程志新
2024-08-30

大写字母开头是公开的,小写字母开头的不是。

 类似资料:
  • 请问在TypeScript中, 我们定义一个类的时候,这个类是否也是type呢? 比如我们: 类型注解的时候,可以注释为Teacher:

  • 我正在做一个小的应用程序,可以列出所有的功能和帮助文档从给定的模块名和函数名。只需练习我的技能。 在我创建和entrybox之后,从user获取作为模块名的输入,并通过以下代码导入: 然后,我尝试使用列出所有函数名。但是我发现函数必须在导入后直接应用到模块名,例如:或。当模块名是一个变量时,是否有任何工作方法来列出所有的函数?

  • 问题内容: 我以这种格式定义了一个.py文件: foo.py 我从另一个文件导入它: main.py 是否可以列出所有功能名称,例如? 感谢您的帮助,我为我想要的课程做了一堂课,如果有建议请发表评论 问题答案: 做这些事情的最干净的方法是使用检查模块。它具有将谓词作为第二个参数的函数。您可以用作谓词。 现在,将是一个元组列表,其中第一个元素是函数的名称,第二个元素是函数本身。

  • 模块“Transformer”解析为非模块实体,不能使用此构造导入。 如何导入类?其实我只是想利用那堂课。我不希望指令在我的代码中产生附带效应。我只想用它:'(

  • 问题内容: 我已尝试找到有关最佳使用还是全面的指南。我刚开始使用Python,并且正在尝试着眼于最佳实践。 基本上,我希望有人能分享他们的经验,其他开发人员有什么喜好,以及避免遇到麻烦的最佳方法是什么? 问题答案: 和之间的区别主要是主观的。选择最喜欢的一个,并在使用中保持一致。这里有一些要点可以帮助你做出决定。 优点: - 减少维护你的import报表。无需添加任何其他导入即可开始使用模块中的另

  • 问题内容: 这段代码在: 最后一行使我感到非常困惑。我不知道的意思。 这些是其他代码: 结果是 我猜想的功能是从中选择所有元素,但是我还没有找到正式的解释。它是什么? 问题答案: builtin.go中的代码用作文档。该代码未编译。 在指出这个函数的最后一个参数是可变参数。可变参数在Go语言规范中进行了说明。 该类型的部分为任何围棋类型替身。

  • 问题内容: 据我了解,python模块永远不会导入两次,即该模块中的代码仅在首次导入时才执行。随后的import语句只需将模块添加到导入范围即可。 我有一个名为“ TiledConvC3D.py”的模块,但似乎已多次导入。我使用pdb在该模块的代码顶部打印堆栈。 这是从第一次执行模块开始的堆栈跟踪的结尾: 它将继续执行多次。但是,第二次调用的完整堆栈跟踪不会显示对的任何调用,因此不应执行这些执行:

  • 问题内容: 我对故障排除看起来像是非常痛苦的故障排除经验,如下所示: 该问题很难解决,因为doSomeStuff()引发了异常,这又导致doSomeOtherStuff()也引发了异常。第二个异常(由finally块引发)抛出了我的代码,但是它没有第一个异常(由doSomeStuff()引发)的句柄,这是问题的真正根源。 如果代码改为这样说,那么问题就很明显了: 所以,我的问题是这样的: 在没有任