「GoCN酷Go推荐」我用go写了魔兽世界登录器?

1.前言

最这个项目的初衷,就是为了让大家更简单的使用go fyne,就是用左手坐标系让所有组件直接绝对定位,写出来一个漂亮的登录器,希望大家一起来学习。

所有图标、界面设计都是小弟自己亲自用PS做的,还望大家点个在看和赞哦~~~~

2.特性

  • 非纯go开发gui工具

  • 他们说下一个大版本叫[Elgin]("Elgin" release, late 2023 Milestone · GitHub),文件夹已经创建好了,非常牛逼

  • 本项目支持播放mp3,且重写io.Copy函数,支持ctx中断拷贝,依赖其函数特性,golang官方默认给了buffer读写大小,每次读32 * 1024字节

3.快速安装

1、安装golang环境,版本能多高就多高,至少1.18以上(笔者是1.20)
2、首先安装gcc https://www.msys2.org/ 跟着官网步骤来,把gcc加入到环境变量中哦,记得打开 CGO_ENABLED=1 (命令:go env -w CGO_ENABLED=1)
3、如果是vs code,记得启动vs code以管理员方式启动,不然就算把gcc放到环境变量了,也找不到的
4、go mod tidy 拉依赖
5、go run main.go 跑起来吧

4.简单举例

给大家看看重写的io.Copy吧:

type readerFunc func(p []byte) (n int, err error)


func (rf readerFunc) Read(p []byte) (n int, err error) { return rf(p) }


// 重写io.Copy方法 ,使其支持取消操作
func copy(ctx context.Context, dst io.Writer, src io.Reader) error {
    _, err := io.Copy(dst, readerFunc(func(p []byte) (int, error) {
        select {
        case <-ctx.Done():
            return 0, ctx.Err()
        default:
            return src.Read(p)
        }
    }))
    return err
}

这次就不写简单例子了,直接上图并且把代码gitee和github都给到大家,下载来源码看吧,下面有gitee与github的地址,源码中几乎重要的地方都有注释,很多官方没有公布的小技巧,都在这里被用上了:

「GoCN酷Go推荐」我用go写了魔兽世界登录器?_第1张图片



[gitee](new-wow-launcher1: 用golang语言写的魔兽世界登录器,使用go-fyne作为gui框架)

[github](GitHub - anyanfei/new-wow-launcher: a golang gui write wow launcher by go fyne)

5.总结

其实有很多go gui的框架,比如前几期说的Golang轻量级桌面程序wails库,带着静态库的govcl,但是fyne还是有着自己魔力,总想让人跃跃欲试,虽然依然需要cgo的支持,但是胜在项目组还是不懈余力的在维护和发展,希望有一天,golang不仅能够在服务端称霸一方,也能在简单的gui中有一席之地。感谢各位同学的学习。

参考资料

[go-fyne](GitHub - fyne-io/fyne: Cross platform GUI toolkit in Go inspired by Material Design)

go-mp3

play-music

欢迎加入 GOLANG 中国社区:https://gocn.vip

推荐阅读:

2024线下活动全面启动,1月6日深圳站不见不散~

Kubernetes创始人发声!K8s在被反噬!

「GoCN酷Go推荐」我用go写了魔兽世界登录器?_第2张图片

快点击阅读原文报名吧~~

你可能感兴趣的:(golang,开发语言,后端)