概览:
Super minimal, rock-solid foundation for concurrent GUI in Go.
摘自https://github.com/faiface/gui这个仓库,gui是一个golang中的gui库。
库官方对并发的解释:
Why concurrent GUI?
GUI is concurrent by nature. Elements like buttons, text fields, or canvases are conceptually independent. Conventional GUI frameworks solve this by implementing huge architectures: the event
loop, call-backs, tickers, you name it.
In a concurrent GUI, the story is different. Each element is actually handled by its own goroutine,
or event multiple ones. Elements communicate with each other via channels.
This has several advantages:
- Make a new element at any time just by spawning a goroutine.
- Implement animations using simple for-loops.
- An intenstive computation in one element won’t block the whole app.
- Enables decentralized design - since elements communicate via channels, multiple communications
may be going on at once, without any central entity.
hello world:
今天呢?先入个门
1 | package main |
其实就是官方的示例修改而来,如果想自适应,应该需要全部组件以窗口大小为基准而更新窗口。我这个示例还没有做到这些,留到以后再探索吧!