开发环境准备

golang并不是为图形界面开发的语言,因此本身并没有带有GUI实现,但是随着语言的推广,使用的增多,有一部分同学开始希望通过Golang直接编写界面程序,而不是重新学习第二门语言,于是社区中渐渐出现了一些Golang的图形化界面库,这个专栏就是基于开源的Fyne库来记录下学习过程。

Fyne作为众多golang GUI库之一,具有开源,使用简单,免费以及跨平台的特性,更重要的是Fyne从出现到现在,一直比较活跃,随着Golang的发展,自己也在不断进化,这一点难能可贵。

1.1 Golang安装

首先下载安装包,能够科学上网的话可以从官网下载:Downloads - The Go Programming Language,打不开的话也可以从这里下载:Downloads - The Go Programming Language

go语言32位 go 语言 gui_图形编程

安装包支持各主流平台,由于我用的mac os,所以这里我们下载Apple mac OS的版本,最新的是1.16.3的安装包,后缀名是.pkg,很好区分。

下载完成后双击就可以安装,安装目录在/usr/local/go/下;也可以选择源码安装,步骤如下:

  1. 下载源码文件,文件以.tar.gz作为后缀:

go语言32位 go 语言 gui_图形编程_02

    2. 将源码解压至/usr/local目录:

tar -C /usr/local -xzf go1.16.3.src.tar.gz

    3. 将 /usr/local/go/bin 目录添加至PATH环境变量:

export PATH=$PATH:/usr/local/go/bin

安装完成后可以通过命令(go env)行验证下安装是否正确,安装正常的话,可以看到golang系统配置信息:

$ go env
GO111MODULE="on"
GOARCH="amd64"
GOBIN="/Users/user/Documents/go/bin"
GOCACHE="/Users/user/Library/Caches/go-build"
GOENV="/Users/user/Library/Application Support/go/env"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/user/Documents/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/user/Documents/go"
GOPRIVATE=""
GOPROXY="https://goproxy.cn"
GOROOT="/usr/local/Cellar/go/1.15.6/libexec"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/Cellar/go/1.15.6/libexec/pkg/tool/darwin_amd64"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD="/dev/null"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/k0/x_cw6r5d56s1hrh46k7wwzy00000gn/T/go-build408465277=/tmp/go-build -gno-record-gcc-switches -fno-common"

1.2 编译工具安装

Fyne编译会用到gcc,所以要确认系统已经安装了,通过-v命令来验证是否已经安装,安装过的可以显示出对应的版本:

$ gcc -v
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
Apple clang version 12.0.0 (clang-1200.0.32.29)
Target: x86_64-apple-darwin20.2.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

如果显示找不到gcc命令的话,说明你的电脑上没有安装gcc,这时候可以通过安装xcode来间接安装gcc。xcode可以直接在软件商店中安装。

1.3 Fyne安装

golang的库文件,直接通过go get指令获取就可以了:

go get fyne.io/fyne/v2

安装完成后可以从GOPATH路径下的bin文件夹看到fyne的安装文件:

go语言32位 go 语言 gui_GUI_03

1.4 环境验证

到这里我们的开发环境就全部准备好了,接下来运行下fyne的demo工程,看下能不能正常运行:

拉取demo工程并运行:

$ go get fyne.io/fyne/v2/cmd/fyne_demo
$ fyne_demo

正常情况下运行完go get 指令后,从GOPATH/bin目录中可以看到fyne_demo的安装文件:

go语言32位 go 语言 gui_go语言32位_04

运行完fyne_demo后,就可以看到GUI 界面了:

go语言32位 go 语言 gui_GUI_05

看到这个界面,说明开发环境已经准备好了,后续就是开发工作了。

待确认问题:

1. Fyne是基于什么实现的?为什么要GCC?

基于golang实现,支持跨平台编译,由于需要调用系统底层驱动,编译时需要用到GCC。