go - 如何制作自己的枚举

标签 go

我是 GoLang 的新手,正在寻求帮助。我正在使用 Windows 10 和 Visual Studio Code。

我想做的是在我的 main.go 文件中使用 Enums。我为它创建了一个名为“Enums”的文件夹,并在其中命名为 SQLQuerys.go 的文件如下所示:

package SqlQuerys

type SqlQuery string

const (

CreateTable SqlQuery = `CREATE TABELE key.users(id int, email text, title text, content text, magic_number int, PRIMARY KEY(id));`

)

所以我想在 main.go 函数中传递一个简单的字符串,看起来像这样(我评论说查询工作正常):

package main

import (
    "log"

    SqlQuerys "golangapi/Enums" //import enums here

    "github.com/gocql/gocql"
)

func main() {
    // connect to the cluster
    cluster := gocql.NewCluster("127.0.0.1")
    cluster.ProtoVersion = 3
    cluster.Keyspace = "key"
    cluster.Consistency = gocql.Quorum
    session, _ := cluster.CreateSession()
    defer session.Close()

    //if err := session.Query(`CREATE TABEL IF NOT EXISTS key.users(id int, email text, title text, content text, magic_number int, PRIMARY KEY(id));`).Exec(); err != nil {
    //  log.Fatal(err)
    //}

    if err := session.Query(SqlQuerys.CreateTable).Exec(); err != nil {
        log.Fatal(err)
    }

}

如何将一个 GoLang 文件导入到另一个文件?

调试后,我得到这个错误:

main.go:6:2: cannot find package "golangapi/Enums" in any of:
C:\Go\src\golangapi\Enums (from $GOROOT)
C:\Users\Admin\go\src\golangapi\Enums (from $GOPATH)
exit status 1

如何在另一个文件中看到另一个 .go 文件?感谢您的任何建议

最佳答案

Go 更像是 地道的 Java。虽然在 Java 中技术上您可以混合和匹配文件中的 namespace 声明与目录结构,但通常它们需要匹配。在 Go 中,它们必须匹配才能正常工作。您的导入路径(在 import 语句中使用)必须匹配可以从中 check out 库的 repo,或者从 $GOPATH/src 开始的磁盘路径(哪个通常应该是一样的)。包名称(在 package 语句中使用)应与路径的最后部分(包含文件的目录的名称)相匹配。没有从一个文件到另一个文件的引用,只有从一个文件到的引用(就像 Java)。因此,以您的示例为例:

$GOPATH
 - src/
   - golangapi/
     - main.go
     - enums/
       - sqlqueries.go

main.go:

package main

import (
    "log"
    "golangapi/enums"
    "github.com/gocql/gocql"
)
...
if err := session.Query(enums.CreateTable).Exec(); err != nil {
    log.Fatal(err)
}

sqlqueries.go:

package enums

type SqlQuery string

const (

CreateTable SqlQuery = `CREATE TABELE key.users(id int, email text, title text, content text, magic_number int, PRIMARY KEY(id));`

)

关于go - 如何制作自己的枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52223147/

相关文章:

http - 中间件如何在 Go 的 chi 路由中工作以及 http.Handler 参数在中间件中指的是什么?

go - 如何使用 Golang 获取发布的二进制数据的文件名?

go - 如何将值动态传递给 Sprintf 或 Printf

nginx - 去websocket,nginx代理这个对吗?

go - cgo:Go 内存中的 Go 指针

inheritance - 命名类型的调用方法

go - fork 存储库上的 'go build' 问题

pointers - slice 作为参数传递的 slice 指针

go - 是否有众所周知的四元数测试向量?惩罚幼稚实现的已知测试代码?

golang 自定义结构未定义,无法正确导入