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

请问:

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是吗?

阅读 2.1k
3 个回答

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

在一个package内的是一个包。然后在同一个包内,不同的 .go 文件内的变量和函数都可以不用显式import去使用。

但是如果跨package的,只有 大写字母 开头的才能被访问到,

大写开头都能引

小写的包内引

这个包是你文件上的package

go语言本质上没有规定目录结构

推荐问题
logo
Microsoft
子站问答
访问
宣传栏