go学习之路 (二)

简单的图形界面

首先,go是没有自己的图形开发库的,所以不能直接开发图形界面,必须要借助第三方图形开发库。目前,比较常用的有:Walk,其他的还有待发掘^ _ ^

Walk安装

walk官网
在安装好go以后,在命令行或者Git Bash执行以下命令进行walk的安装

go get github.com/lxn/walk

在图形界面开发过程中,肯定会需要很多自己添加的图片等等,所以为了最终的go应用程序更加简洁,我们需要一个打包图片等资源的工具:rsrc,同样安装命令如下:

go get github.com/akavel/rsrc
第一个Walk程序

哇!虽然这是一个很简单的程序,但是过程真的有点折磨人,不过幸好网上资料也多。我们首先看程序和效果吧。

/*定义包名称main:每个源文件非注释行的第一行必须指明这个文件属于哪个包;且每个go应用程序都包含一个名为main的包*/
package main

/*引入包:这个包包含了后面程序要用的函数或其他元素*/
import (
	. "github.com/lxn/walk/declarative"
	)

/*定义main函数:使用func关键词定义函数*/
func main(){
	FirsrWindow.Run()
}

var LableHello=Label{
	Text:"Mylover Tang wei",
	MinSize:Size{100, 100},
}

var widget = []Widget{
	LableHello,
}

var FirsrWindow = MainWindow{
	Title:"Hello",
	MinSize:Size{200, 200},
	Layout:VBox{},
	Children:widget,
}

效果图:
hello
在编译这个程序的时候出现了以下的问题:提示$GOPATH/go/src/golang.org/x这个路径下面的东西不存在,如下:
错误提示
好吧,不存在就创建就好了,一般go文件的根目录是: C:\Users\ww\go
gitbash操作步骤:

1、cd  C:\Users\ww\go\src
2、mkdir golang
3、cd golang
4、mkdir x
5、cd x
6、git clone https://github.com/golang/sys.git
7、go install golang.org/x/sys/...
8、git clone https://github.com/golang/net.git
9、git clone https://github.com/golang/text.git
10、go install golang.org/x/crypto/...

最后看看在C:\Users\ww\go\pkg\windows_amd64\golang.org\x路径下面是否有crypto和sys两个文件夹。但是新的问题出现了:
错误提示
又说win下面应该存在的文件没有。~ _ ~
好吧,没有还是继续给它添上就好了。
Gitbash操作步骤:
1、到win的上一级目录lxn文件夹下,执行

go get github.com/lxn/win

2、检查win下面是否有很多go文件

再次编译,编译成功
!!可是编译成功以后,发现不能运行诶!!原来因为Walk这个图形库必须要依赖manifest才能正常运行。所以我们现在还需要使用rsrc来为可执行文件打包manifest文件。
步骤:

1、创建hello.exe.manifest文件,内容如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
	<assemblyIdentity version="1.0.0.0" processorArchitecture="*" name="SomeFunkyNameHere" type="win32"/>
	<dependency>
		<dependentAssembly>
			<assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"/>
		</dependentAssembly>
	</dependency>
	<application xmlns="urn:schemas-microsoft-com:asm.v3">
		<windowsSettings>
			<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2, PerMonitor</dpiAwareness>
			<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">True</dpiAware>
		</windowsSettings>
	</application>
</assembly>
2、rsrc -manifest hello.exe.manifest -o rsrc.syso
3、重新编译:go build hello.exe
4、运行成功
导入包方式

规则:

1、自定义的每个go文件要在第一行使用package关键字指明自己是属于哪个包(文件夹),原则上包名应该和文件夹同名。
2、每个包(文件夹)可以包含多个go文件
3、同一个文件夹下面所有的go文件应该指定相同的包名
4、当使用import引入某个包时,默认引入该文件夹下面所有文件

语法:

import(
	"fmt"
)

常用的引入包的方式中除了有绝对路径和相对路径之分,还有以下三种导入方式:

1、点操作:比如 import(. "fmt")。这个点的含义就是,在使用fmt包中的函数时,可以省略前缀包名。
 	即:fmt.Println("hello")  =  Println("hello")
 2、别名操作:比如 import(f"fmt")。可以这样把包名命名成另一个简单易记得名字。
 	即:fmt.Println("hello") = f.Println("hello")
 3、_操作: 比如import(_"github.com/ziutek/mymysql/godrv")。当我们导入一个包时,相当于导入了它所有的go文件,但是有的时候我们并非真的需要使用这些包,仅仅是希望它的init函数被执行,那么这时就可以使用这样的方式。
var关键字

在go语言中有两种定义变量的方式:

1、“:=” 
    比如: value := "hello"。
	(1) 这时声明了一个value变量并且赋初值为“hello”;
	(2) ":="方式可以自动识别变量类型
	(3) 该方式不可以用来声明全局变量
2、var关键字
	(1) 定义变量
	 指定变量类型,比如:var value int,未赋初值时,初始值为系统默认值。init是0,bool为false。
	 根据值自行判定数据类型,比如:var value = 10;这时value为int类型。
	 (2) 声明一个函数
	 比如:var pr = fmt.Println
	 这样,就可以使用pr来代替fmt.Println。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值