Skip to main content

Command Palette

Search for a command to run...

Go 语言安装、配置、运行

Updated
2 min readView as Markdown
C
酷愛計算機技術Ardently Love Computer Technology 長期關註反洗錢反欺詐Long-term Focus on Anti-Money Laundering and Anti-Fraud 精通支付結算的技術、系統、流程和製度Proficient in the Technology, System, Process and Institution of Payment and Settlement
  • 下载、安装与配置

下载 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}

More from this blog

Penetration Test、Python、Weaponization

721 posts

微信 smartcat9999 反欺詐Anti-Fraud 反洗錢Anti-Money Laundering 反逃稅Anti-Tax Evasion 滲透測試Penetration Test 武器化Weaponization