Go 示例
新功能:现在有一个支持 Golang 的在线实时编辑器。直接在浏览器中尝试和编辑示例:
如果你喜欢这个项目,你可能也会喜欢
我的 golang-benchmarks 仓库:
我的 gotools 仓库:
我的 sql-examples 仓库:
我的 rp2040-examples 仓库:
或我的 rpi-examples 仓库:
关于
这些示例解释了 Golang 的基础知识。随着时间的推移会有更多示例。
如果你愿意,随时添加更多 Golang 示例。非常感谢所有贡献者。
安装 go(lang)
使用 homebrew:
sudo brew install go
使用 apt-get:
sudo apt-get install golang
示例
这些示例分为三个难度级别。初学者部分包含非常简单的示例,从 Hello World 开始,但也包含一些简单的算法。进阶部分使用 Golang 更复杂的功能。最后,专家部分包含像 telnet 客户端或 http 服务器(甚至带有 SSL)这样的应用程序。 如果你想要更多 Golang 示例,可以查看我在 GitHub 上的其他 go 仓库:
- golang-benchmarks 展示了如何对 Golang 函数的执行时间进行基准测试
- GolangSortingVisualization 在终端或 gif 中可视化各种排序算法
- golang-minigames 目前只包含一个贪吃蛇克隆
- bbmandelbrot.go 计算曼德布罗特分形并将其保存为 PNG
- golibs 包含各种 Go 包(例如数学、转换器、堆栈、cli 等)
- fsagent 监视文件夹中的新文件或修改文件并执行操作
- cgol.go 是用 Golang 实现的 Conway 的生命游戏
- micromarkdownGo 将 markdown 转换为 html(通过正则表达式)
- wikiGo 是一个 Go 的 wiki 软件
- WorkingTimeMeasurementSystem 演示了如何使用 Golang 和 SQLite 创建一个简单的时间跟踪系统
- zplgfa 是一个图像转换器,用于在兼容 zpl 的标签上打印图片
- ...
它们都作为免费和开源软件发布。
如果这些对你来说还不够,你可以看看以下网站:
初学者
要执行 Golang 程序,在命令行输入 go run
后跟文件名。
你也可以通过 go build
命令将文件转换为二进制可执行程序。
如果你知道 #!
,也称为 Shebang,go 也有等效的: //usr/bin/env go run $0 $@ ; exit
打印 Hello World 并附带注释 (Golang Playground)
go run HelloWorld.go
打印 Hello World 并附带注释(shebang 版本)
./HelloWorldShebang.go
声明变量并打印 (Golang Playground)
go run var.go
打印变量的各种方式(和风格) (Golang Playground)
go run printf.go
Golang 中的 if 语句 (Golang Playground)
go run if.go Hello
声明数组并打印其项目 (Golang Playground)
go run array.go
声明自己的函数 (Golang Playground)
go run function.go
多次执行某事 (Golang Playground)
go run for.go
读取通过命令行提供的输入数据 (Golang Playground)
go run args.go string string2
读取通过命令行提供的输入数据 (Golang Playground)
go run input.go
或扫描它 (Golang Playground)
go run scan.go
读取命名参数输入数据 (Golang Playground)
go run flag.go
返回工作目录 (Golang Playground)
go run dir.go
以各种格式返回当前时间/日期 (Golang Playground)
go run time.go
返回伪随机整数值 (Golang Playground)
go run random.go
以两种不同方式连接字符串 (Golang Playground)
go run cat.go
模运算找到除法的余数 (Golang Playground)
go run modulo.go
用另一个字符串分割字符串并从结果创建数组 (Golang Playground)
go run split.go
阿克曼函数的示例实现 (Golang Playground)
go run ackermann.go
欧几里得算法的示例实现 (Golang Playground)
go run euklid.go
将函数作为参数提交 (Golang Playground)
go run functioncallback.go
由函数返回的函数 (Golang Playground)
go run functionclosure.go
具有未知数量输入的函数(可变参数函数) (Golang Playground)
go run functionvariadic.go
空接口作为参数(你不知道类型) (Golang Playground)
go run interface.go
执行 Shell/Bash 命令并打印其输出值 (Golang Playground)
go run shell.go
创建具有函数的结构体(对象) (Golang Playground)
go run oop.go
依赖注入以便于测试
cd beginner/di
go test
Go 中的哈希(md5, sha) (Golang Playground)
go run hashing.go
进阶
基准测试示例(使用 JSON marshal 和 unmarshal 作为示例) (Golang Playground)
从根目录 ($GOPATH/github.com/SimonWaldherr/golang-examples
) 运行此命令:
go test -bench=. -benchmem advanced/json_bench/main_test.go
使用 os.Stdin 制作可管道化的 unix 应用程序 (Golang Playground)
go run pipe.go
AES-GCM 加密示例 (Golang Playground)
go run aesgcm.go
Bcrypt 哈希示例 (Golang Playground)
在运行此文件之前,请通过运行 go get golang.org/x/crypto/bcrypt
安装包 golang.org/x/crypto/bcrypt
go run bcrypt.go
在数组中搜索元素是否存在 (Golang Playground)
go run in_array.go
计算三角形 (Golang Playground)
go run pythagoras.go (float|?) (float|?) (float|?)
从标准输入读取(但不等待回车键)
go run getchar.go
等待和休眠 (Golang Playground)
go run wait.go
后进先出示例(Golang中的弹出和压入) (Golang Playground)
go run lifo.go
通过正则表达式分割字符串并将结果生成数组 (Golang Playground)
go run regex.go
更高级的正则表达式(带时间和日期) (Golang Playground)
go run regex2.go
使用我的 golibs regex 包 并玩得开心 (Golang Playground)
go run regex3.go
计算并打印斐波那契数列 (Golang Playground)
go run fibonacci.go
计算并打印请求的(第32个)质数 (Golang Playground)
go run prime.go 32
处理数字、字符串和 switch-case (Golang Playground)
go run numbers.go
使用模板创建和填充文档(此示例使用 LaTeX) (Golang Playground)
go run template.go
pdflatex -interaction=nonstopmode template_latex.tex
启动一个定时器(定期执行任务)
go run ticker.go
在超时情况下执行操作 (Golang Playground)
go run timeout.go
将 go 对象转换为 json 字符串 (Golang Playground)
go run json.go
在 go 应用中运行 unix/shell 命令
go run exec.go
通过管道压缩
go run compress.go
通过文件压缩
go run compress2.go
解析 CSV (Golang Playground)
go run csv.go
将 CSV 转换为 Markdown 表格 (Golang Playground)
go run csv2md.go
将 XML 字符串解析为具有未定义字段的结构体 (Golang Playground)
go run xml.go
运行一个自杀应用
go run suicide.go
GoCV : 视频演示
go run hello_video.go
GoCV : 人脸检测
go run face_detect.go 0 model/haarcascade_frontalface_default.xml
运行泛型示例 (Golang Playground)
go run generic.go
专家
用 go 计算 π (leibniz、euler 和 prime 会一直运行,直到你通过 CTRL+C 停止它)
go run pi2go.go leibniz
go run pi2go.go euler
go run pi2go.go prime
用 go 计算 π - 与上面相同 - 但有实时输出(基于 gcurses)
go run pi2go-live.go leibniz
go run pi2go-live.go euler
go run pi2go-live.go prime
列出工作目录中的文件
go run explorer.go
从 golang 运行汇编代码
go run assembly.go
从 golang 运行 C 代码
go run cgo.go
使用 golang 模板生成 Go 代码
go run codegen.go
从 rgb 转换为 hsl (Golang Playground)
go run color.go
使用 Golang 实现 Telnet
go run telnet.go
最小的 Golang http 服务器
go run httpd.go
安全的 Golang http 服务器
go run httpsd.go
最小的 Golang http 代理
go run proxy.go
读取和写入 cookies
go run cookies.go
演示多线程/并行计算的威力 你必须将 GOMAXPROCS 设置为大于 1 的值才能看到效果
export GOMAXPROCS=8
time go run parallel.go true
time go run parallel.go false
动态数量的通道
time go run dynparallel.go 8
运行编译器并注释每一个包含错误的行
go build gocomment.go
./gocomment go-app.go
将图像转换为灰度图和颜色反转图
go run image.go
生成一个包含三个彩色圆圈(带交集)的图像
go run image2.go
生成表示曼德布罗特分形的图像
go run image3.go
Sql (sqlite) Golang 示例 也许你还想看看我的 sql-examples 项目
go run sqlite.go insert test
go run sqlite.go select
公钥/非对称加密签名和验证
go run ppk-crypto.go
命令行参数 Golang 示例 我们可以通过在命令行中指定运算符 '-' 及参数名称和要设置的值来获取参数值。例如 -env=qa
go run command_line_arguments.go
go run command_line_arguments.go -env=qa -consumer=true
Cron Golang 示例 我们可以通过 cron 在特定时间触发函数
go run cron.go
Map Golang 示例 golang 中的哈希表标准函数
go run map.go
编译
Golang 的一个重要特性是,你可以通过 go run name.go
启动 go 应用程序,也可以通过 go build name.go
将其编译为可执行文件。之后你可以启动编译后的版本,它启动速度会更快。
如果你启动 fibonacci.go 和编译后的版本,你会注意到最后一行包含的执行时间差别不大,但如果你用 time ./fibonacci 32
和 time go run ./fibonacci.go 32
启动,你就会看到差异。
许可
Copyright © 2024 Simon Waldherr 双重许可。有关详细信息,请参阅 LICENSE 文件。