重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Fyne 是一个 Go 语言开发的易用的 UI工具包,提供基于 OpenGL 的跨平台图形界面应用开发支持。
创新互联是一家集网站建设,成县企业网站建设,成县品牌网站建设,网站定制,成县网站建设报价,网络营销,网络优化,成县网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
示例代码:
示例效果:
完整的工具包:
浅色主题:
点击下方链接,获取软件下载地址↓↓↓
Fyne首页、文档和下载 - Go 的 GUI 框架开发包 - 开源中国
建议可以从以下几个方面着手:
1、建议学习 Python。Python 基础语法内容较为简单,可以比较快的了解编程的思维习惯,并能够较快接触到 Python GUI 库(比如Tkinter),很容易借用这些库开发出一些有趣的程序。同时 Python 的缩进格式也比较严格,这也很好的让编程初学者养成一个良好的编写代码习惯。
在美国有很多编程初学 Python 的书籍,其受众就是小学、初中的青少年,比如《Python for Kids》,这些书籍一个很大的特点就是图文并貌,并且很快引入图形库的学习,教会小朋友制作出一些图形和简单的游戏,比如画星星,弹球。这样的好处是激发小朋友学习编程的乐趣,让小朋友从小就感受到编程的魅力。
2、读大一零基础学编程
上学习编程的首要任务是学习电脑的基础操作,熟悉键盘,让自己对电脑有初步的了解认识。至于理工科专业的学生大一估计都会教《计算机科学导论》这样类似的课程,如果想尽快编程,学生应尽快将该书内容看一遍,让自己对计算机有一个整体的认识。
那么大一学生若要系统的学习 C语言,建议使用 《C Primer Plus》,英语好的同学可以直接看英文版,注意该书不是《C++ Primer》,《C++ Primer》可以在 C语言学的有一定基础的时候看。当学完《C Primer Plus》之后,可以对算法的知识学习,有精力的话可以啃《算法导论》。平时可以多上 github 上直接看源码,这样比单纯看书进步的更快。
3、新手学习编程,看书时一定要不能只看不动手,一定要同时动脑、动手,要将书里面的代码都勤奋的敲。
值得注意的是,编程是个比较广义的概念,编程语言有数种,所以要学习计算机语言就要先了解语言的发展史以及各种语言在不同领域的作用,推荐先学C/C++,这门计算机语言是一门相对简单且发展的比较完善的计算机语言,初次之外呢还有basic、C#、java等等,在C之前还有更加原始的计算机语言。
推荐的学习资料是郝斌老师的教学视频,还有谭浩强老师的《C程序设计》一书,建议先看书在看视频,当然也可以同时看,这两样都是入门的较好的参考资料。
go 可以开发桌面应用,但并不是很舒适。
可以使用的GUI库有:
1、goqt,LiteIDE作者出品,Go和QT的绑定,还未发布
2、go.uik,纯Go实现的并发UI工具
3、walk,Windows Application Library Kit
4、gform,Windows GUI framework
目前的话walk用得比较多
不过go的GUI库用起来没有C#、C/C++的那么顺手。
这个问题不久之后应该会有所改善,毕竟用Go开发桌面的需求在不断增加。
目前我采用的是用go http 做后端,Webkit+HTML5 做界面,表现力很好,前端不需要学习新知识,一般的管理类应用都能搞定。
你好,使用golang写动态库,再使用易语言写界面,肯定有不少人有这种想法吧;但中间有些坑,这里留下一些解决方法。
一、如何编译?
请先安装gcc编译器,选择32位
由于易语言只支持32位dll,使用64位会出错,例如找不到此函数;
必须先设置两项配置:set GOARCH=386,set CGO_ENABLED=1,用cmd;
编译命令:go build -ldflags "-s -w" -buildmode=c-shared -o dlldemo.dll dlldemo.go 。
二、形参与返回值
在go中,除了 string 特殊外,其他int、bool,等基本类型原本怎样还是怎样;
传 string 与返回值 string 都改成 *C.char 类型,其他基本类型不用改;
有三个方法比较重要,C.CString 转成c字符串,C.GoString 转成go字符串 , C.free 释放内存;
只要用到 C.CString 此方法,就必须记得释放内存。
三、内存泄漏
如果使用了 C.CString 却不使用 C.free ,内存暂用只会越来越大,最后奔溃;
释放内存时,请不要重复取地址,例如 unsafe.Pointer(xx变量) ,这样等于没释放;
也可能是vc6的原因,使用 defer 在即将出栈时释放,会造成易语言得不到返回值;
解决方法,声明全局变量,将结果赋值给全局变量,专门定义一个释放函数例如FreeAll() 用于释放!
四、如何调用
在填写dll命令时,请在填写,在库中对应命令名时,前面加个 @ ,不然会出现栈错误;
每次调用返回值是文本型dll命令时,请都使用前面准备的 FreeAll() 释放内存!
通过易语言的便捷,为自己的golang小项目加点gui吧,这里留下源码,给有需要的人。
希望能帮到你。
因为golang官方主要把精力投入到go本身的发展中去(更准确的GC算法、更高的并发)。 而golang的主要贡献者不多,
所以还不是很忙的过来,golang官方希望GUI可以靠社区推动发展,官方本身是没有意向发布GUI包的。