第一个go项目-利用go语言生成条形码与go的代理

看语法看到看不下去,前半句话里的3个“看”字暴露了博主词汇的贫乏。就想着利用go语言实现一个小项目来练习一下实际操作,首先是新建一个文件夹,然后在powershell里进入该文件夹,首先生成mod文件:

go mod init goBarCode

一波三折下载库文件

接下来安装库,本来是一行语句搞定的事:

go get github.com/boombuler/barcode

然而国内下载github文件并没有那么方便,所以有时候遇到网络连接失败的时候,我们需要更换成国内代理

go env -w GOPROXY=https://goproxy.cn

更换之后可以用以下命令查看:

//查看
go env GOPROXY
//取消修改用如下命令
go env -u GOPROXY

默认地址是https://proxy.golang.org,direct,修改成功后会变为https://goproxy.cn,现在重新尝试用get命令获取我们需要的库,就可以成功下载了。命令运行成功后会发现,文件夹里多个一个go.sum文件,该文件是 Go 模块系统自动生成的依赖锁定文件,所以请允许它继续呆在那里。

生成main主文件

单独一个小标题以示尊重~

ni main.go -type file

开始尝试实例

下面这个案例会生成一张png图片,但博主更希望直接生成svg;

package main

import (
    "image/png"
    "os"
    "github.com/boombuler/barcode"
    "github.com/boombuler/barcode/code128"
)

func main() {
    // 1. 创建 Code 128 条形码(返回 BarcodeIntCS 类型)
    code128Code, err := code128.Encode("1234567890")
    if err != nil {
        panic(err)
    }

    // 2. 缩放条形码(返回 Barcode 类型)
    scaledCode, err := barcode.Scale(code128Code, 300, 80)
    if err != nil {
        panic(err)
    }

    // 3. 保存为 PNG 文件
    file, err := os.Create("code128.png")
    if err != nil {
        panic(err)
    }
    defer file.Close()

    err = png.Encode(file, scaledCode)
    if err != nil {
        panic(err)
    }

    println("Code 128 条形码生成成功:code128.png")
}

尝试换个库,首先删除main文件里的所有内容并保存,然后运行如下命令清理过时的依赖:

go mod tidy

svg条码库

重新下在依赖:

go get github.com/juliankoehn/barcode

测试功能代码:

package main

import (
    "os"

    "github.com/juliankoehn/barcode"
)

func main() {
    // 直接生成 SVG 字符串
    svgString := barcode.GetBarcodeSVG(
        "1234567890",          // 内容
        "C128",               // 类型 (如 C128, EAN13, QR)
        10,                  // 宽度
        100,                  // 高度
        "#000000",            // 颜色
        true,                 // 是否在下方显示数字
        true,                // 是否内联 (去掉 XML 头)
    )

    // 写入文件
    os.WriteFile("barcode.svg", []byte(svgString), 0644)
}

程序生成了一个条码,利用微信扫码后获取的信息为:1234567890,完美闭环了。

标签: go语言

移动端可扫我直达哦~

推荐阅读

thumbnail 2026-06-04

go语言gin框架的学习笔记

上半年尝试制作了一个微信小程序,通过小程序请求后台服务器,服务器负责组装好用户需求的mp3文件,然后返回给用户播放地址,以实现一个简单的听写功能。其中后台的逻辑基本都是通过deepseek实现的,虽然成功跑通了,但是一直想从头手搓一遍...

少儿编程 go语言

thumbnail 2026-06-02

提升读写性能,go语言的bufio包

最近在尝试学习go语言,想去洛谷做几道题吧,结果前几个答案是正确的,最后两个报了超时,标准输入输出fmt存在读写性能上的缺陷。deepseek推荐了这个bufio包。bufio 包的核心功能bufio 提供缓冲 I/O,通过减少系统调...

少儿编程 go语言

thumbnail 2026-05-30

fmt,Go 语言自带的格式化输入输出包

fmt 可以理解为 Format(格式)的缩写——因为它擅长格式化数据(比如把数字嵌进句子中间)。fmt 就是 Go 语言的"终端对话工具",让你能在屏幕上显示东西,也能从键盘获取输入。fmt包的常用指令 概念对应 fmt 函数标准输...

少儿编程 go语言

thumbnail 2026-05-27

乱点技能树之-go语言笔记篇

系统仍旧是廉颇老矣的windows7,所以很多软件的新版本都没法运行,就像go已经出到了1.26版本,但win7上仅支持1.20.14,再往上就不受支持了,所以下方的代表仅在上述版本中验证通过。学习go语言的第一感受是,go语言取消了...

少儿编程 go语言