Go 语言安装、配置、运行
- 下载、安装与配置
下载 Go 安装包
$ wget https://mirrors.aliyun.com/golang/go1.26.0.linux-amd64.tar.gz
将下载的压缩包解压到 /usr/local 目录
# tar -xvf go1.26.0.linux-amd64.tar.gz -C /usr/local
配置环境变量。编辑 ~/.bashrc 或 ~/.profile 文件,添加以下内容
# nano .bashrc
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
使环境变量立即生效
# source ~/.bashrc
验证安装
$ go version
go version go1.26.0 linux/amd64
配置 Go 模块代理以加速依赖下载
$ go env -w GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.io,direct
验证配置
$ go env | grep GOPROXY
GOPROXY='https://goproxy.io,direct'
- 运行第一个 Go 文件
初始化 Go 模块
打开终端,进入项目的根目录,执行 go mod init 命令的时候加上模块的路径
$ go mod init bankcn-demo
go: creating new go.mod: module bankcn-demo
运行 go mod init 命令会在项目的根目录下生成一个 go.mod 文件。该文件包含了模块信息和依赖信息
$ ls -lhirt
2013276 -rw-rw-r-- 1 go.mod
go get 命令用于下载并安装 Go 语言包,它会自动解析导入路径,找到对应的代码库地址
使用 @版本号 可以下载指定版本代码
$ go get github.com/bububa/bankcn@latest
go: downloading github.com/bububa/bankcn v1.0.1
go: added github.com/bububa/bankcn v1.0.1
go.mod 是 Go 模块的根配置文件,它定义了模块的路径(即模块名称)和模块的依赖要求(包括依赖的模块路径和版本)
go.sum 文件记录了每个依赖库的版本和对应的哈希值。这个文件是由 Go 工具自动生成和更新的,它确保了项目所依赖的模块的完整性。当你下载依赖时,Go 工具会计算依赖模块的哈希值,并与 go.sum 文件中记录的哈希值进行比对,以确保依赖模块没有被篡改
$ ls -lhirt
2013276 -rw-rw-r-- 1 go.mod
2013831 -rw-rw-r-- 1 go.sum
创建一个叫做 main 的 go 文件
$ touch main.go
$ ls -lhirt
2013276 -rw-rw-r-- 1 go.mod
2013831 -rw-rw-r-- 1 go.sum
2013832 -rw-rw-r-- 1 main.go
打开刚刚创建的 main.go 文件,键入代码
$ nano main.go
package main
import (
"fmt"
"log"
"strings"
"github.com/bububa/bankcn"
)
func main() {
var cardNo string
fmt.Print("请输入银行卡号: ")
// 读取命令行输入的卡号
if _, err := fmt.Scanln(&cardNo); err != nil {
log.Fatalln("输入错误:", err)
return
}
// 去除可能带有的前后空格或换行符
cardNo = strings.TrimSpace(cardNo)
var bank bankcn.Bank
fmt.Println("--- 尝试线上查询 (GetBankByCardOnline) ---")
if err := bankcn.GetBankByCardOnline(cardNo, &bank); err != nil {
log.Println("线上查询失败:", err)
} else {
fmt.Printf("%+v\n", bank)
}
fmt.Println("--- 尝试本地Bin码查询 (GetBankByCardBin) ---")
if err := bankcn.GetBankByCardBin(cardNo, &bank); err != nil {
log.Println("Bin码查询失败:", err)
} else {
fmt.Printf("%+v\n", bank)
}
}
go run 专门用来运行命令源码文件的命令,只能接受一个命令源码文件以及若干个库源码文件
$ go run main.go
{Bank:ABC Name:中国农业银行 BankUnionID: Address: Phone: AreaID: CardType:DC}
{Bank:ABC Name:中国农业银行 BankUnionID: Address: Phone: AreaID: CardType:DC}