如何制作自己的枚举

问题描述 投票:-2回答:1

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

我想要做的是在我的Enums文件中使用main.go。我为它创建了一个名为“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
1个回答
0
投票

Go更像是惯用的Java。虽然在Java中技术上可以将文件中的命名空间声明与目录结构混合和匹配,但通常它们需要匹配。在Go中,它们必须匹配才能正常工作。您的导入路径(在import语句中使用)必须匹配可以从中检出库的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));`

)
© www.soinside.com 2019 - 2024. All rights reserved.