Golang中如何使用他人创建的包?

Golang中如何使用他人创建的包? 你好。我是一名具备基本 PHP/MySQL 知识的前端开发者。Go 对我来说是一个新事物。

我正在尝试使用一个由其他人创建的包

该包的文档提到了像这样的命令:

-block-file=[FILENAME]

这些命令看起来像 Node.js 的命令。过去,我曾因为 SASS、uglify-js 等原因使用过几次 Node.js 的东西,但我现在无法完全回忆起如何使用它。涉及到这些终端命令时,对于像我这样的前端开发者来说可能相当晦涩难懂。

我尝试在互联网和 YouTube 上搜索答案,但找不到循序渐进的教程。

我的操作系统是 Windows 7。我已经在 D 盘安装了 Go。

假设我现在在桌面上。第一步是打开命令提示符吗?


更多关于Golang中如何使用他人创建的包?的实战教程也可以访问 https://www.itying.com/category-94-b0.html

11 回复

感谢您帮忙检查命令。我不明白应该将哪个可执行文件放入文件夹。从哪里可以获取这个可执行文件?

更多关于Golang中如何使用他人创建的包?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


非常感谢!我刚刚成功转换了这两个文件!

在GitHub上。如自述文件中所述,在“Releases”(发布)标签页中。

谢谢。如果我没理解错的话,那些命令并不是必需的,而且很可能命令提示符也不需要。

这个包在 GoDoc 上有文档。您能告诉我,要使用它的 ConvertFile 函数,我需要做的第一步是什么吗?

是的,我忘了这一点。你需要先执行 go get github.com/maxmind/geoip2-csv-converter

但你真的只需要转换一次那个文件,还是需要定期地通过编程方式转换文件?

如果是前者,直接使用他们从 GitHub 发布页面提供的二进制文件,在终端中运行它,并提供 README 中描述的参数即可。

这些是你可以从该仓库项目编译出的二进制文件的参数。

如果你只导入 github.com/maxmind/geoip2-csv-converter/convert 包,你就不需要关心它们。

只有当你想要使用基于该源代码创建的程序时,你才需要将这些参数与该可执行文件一起使用。


编辑并附言:除非你需要重新加载环境,否则永远不应该关闭你的终端。它应该是编程中第二常用的工具,仅次于一个甚至可以在终端中运行的简单编辑器。没有人需要 Blowclipse 或 IntelliHuge…

Ian:

另外,我应该使用哪个“二进制文件”?

选择适用于您操作系统的版本。只需将其放置在您需要的位置并运行即可。假设可执行文件名为 foo,并且您将其放在了与数据文件相同的文件夹中,那么您可以像这样运行:

./foo -block-file=GeoLite2-City-Blocks-IPv4.csv -output-file=GeoLite2-City-Blocks-IPv4-converted.csv -include-range

或者,相应地使用 *-IPv6* 版本。

但这与 Go 语言本身无关。这是每个程序员都应该知道的基本终端使用方法。

导入它,然后调用它,大致如下:

package main

import "github.com/maxmind/geoip2-csv-converter/convert"

func main() {
  err = convert.ConvertFile("~/input.data", "~/output.data", true, false, false)
  if err != nil {
    panic(err)
  }
}

将该文件保存在任意位置,然后使用终端 cd 到保存该文件的目录,并执行 go run filename

我需要转换的只有两个文件:GeoLite2-City-Blocks-IPv4.csv 和 GeoLite2-City-Blocks-IPv6.csv。然后我会将这两个转换后的文件导入到 MySQL 数据库中。所以我想我的情况属于前者?如果是这样,你能帮我检查一下下面的命令是否正确吗?

-block-file=GeoLite2-City-Blocks-IPv4.csv -output-file=GeoLite2-City-Blocks-IPv4-converted.csv -include-range

另外,我应该使用哪个“二进制文件”?以及如何使用?

感谢您的说明。我尝试转换的文件是 GeoLite2-City-Blocks-IPv4.csv。它位于我桌面上的一个文件夹中。因此,我将 converter.go 文件保存在了同一个文件夹。

以下是我的 converter.go 文件:

package main

import "github.com/maxmind/geoip2-csv-converter/convert"

func main() {
  err = convert.ConvertFile("~/GeoLite2-City-Blocks-IPv4.csv", "~/GeoLite2-City-Blocks-IPv4-converted.csv", false, true, false)
  if err != nil {
    panic(err)
  }
}

但是,当我 cd 进入该文件夹并运行 go run converter.go 后,我收到了以下消息:

converter.go:3:8: cannot find package "github.com/maxmind/geoip2-csv-converter/c
onvert" in any of:
        D:\Go\src\github.com\maxmind\geoip2-csv-converter\convert (from $GOROOT)

        C:\Users\Ian\go\src\github.com\maxmind\geoip2-csv-converter\convert (fro
m $GOPATH)

首先,你需要在Windows命令提示符中操作。这个包是一个命令行工具,不是通过import在Go代码中使用的库。

步骤:

  1. 安装工具: 在命令提示符中运行:

    go install github.com/maxmind/geoip2-csv-converter[@latest](/user/latest)
    

    这会在你的GOPATH/bin目录(通常是%USERPROFILE%\go\bin)中生成可执行文件。

  2. 使用工具: 假设你要转换一个CSV文件,命令格式如下:

    geoip2-csv-converter -block-file=GeoIP2-City-Blocks-IPv4.csv -output-file=output.csv
    

    你需要先下载MaxMind的CSV数据文件(如GeoIP2-City-Blocks-IPv4.csv),然后在命令中指定路径。

示例: 如果你将数据文件放在桌面,可以这样操作:

cd Desktop
geoip2-csv-converter -block-file=GeoIP2-City-Blocks-IPv4.csv -output-file=result.csv

注意:

  • 确保%USERPROFILE%\go\bin已添加到系统PATH环境变量中,否则可能找不到geoip2-csv-converter命令。
  • 如果遇到权限问题,以管理员身份运行命令提示符。

这个工具直接处理CSV文件,不需要在Go代码中编写程序。

回到顶部