go 语言学习框架 2021.6.26
###感悟:创新和效率是先进的两个方向。达不到专业水平,无意义-因为没人会为业余水平付费。
###
一、对文本文件进行读写
参考文章:https://studygolang.com/articles/2073?fr=sidebar
>1.覆盖写入
2.追加写入
3.整体读出
4.按行读出
```go
package main
import (
"bufio" //缓存IO
"fmt"
"io"
"io/ioutil" //io 工具包
"os"
)
func check(e error) {
if e != nil {
panic(e)
}
}
/**
* 判断文件是否存在 存在返回 true 不存在返回false
*/
func checkFileIsExist(filename string) bool {
var exist = true
if _, err := os.Stat(filename); os.IsNotExist(err) {
exist = false
}
return exist
}
/**
from: http://www.isharey.com/?p=143
*/
func main() {
var wireteString = "测试n"
var filename = "./output1.txt"
var f *os.File
var err1 error
/***************************** 第一种方式: 使用 io.WriteString 写入文件 ***********************************************/
if checkFileIsExist(filename) { //如果文件存在
f, err1 = os.OpenFile(filename, os.O_APPEND, 0666) //打开文件
fmt.Println("文件存在")
} else {
f, err1 = os.Create(filename) //创建文件
fmt.Println("文件不存在")
}
check(err1)
n, err1 := io.WriteString(f, wireteString) //写入文件(字符串)
check(err1)
fmt.Printf("写入 %d 个字节n", n)
/***************************** 第二种方式: 使用 ioutil.WriteFile 写入文件 ***********************************************/
var d1 = []byte(wireteString)
err2 := ioutil.WriteFile("./output2.txt", d1, 0666) //写入文件(字节数组)
check(err2)
/***************************** 第三种方式: 使用 File(Write,WriteString) 写入文件 ***********************************************/
f, err3 := os.Create("./output3.txt") //创建文件
check(err3)
defer f.Close()
n2, err3 := f.Write(d1) //写入文件(字节数组)
check(err3)
fmt.Printf("写入 %d 个字节n", n2)
n3, err3 := f.WriteString("writesn") //写入文件(字节数组)
fmt.Printf("写入 %d 个字节n", n3)
f.Sync()
/***************************** 第四种方式: 使用 bufio.NewWriter 写入文件 ***********************************************/
w := bufio.NewWriter(f) //创建新的 Writer 对象
n4, err3 := w.WriteString("bufferedn")
fmt.Printf("写入 %d 个字节n", n4)
w.Flush()
f.Close()
}
```
###
二、打开文件目录
保存
###
三、界面功能
go walk使用记录(一)
sthahahaa 2019-04-29 13:36:50 9427 收藏 1
分类专栏: go图形编程 文章标签: golang walk GUI编程
版权
###
1、go walk库可以做什么
- 为什么用go walk:想开发一些图形化工具,工作当中很多时候还是有小工具需求的。
###
2、前置注意点
官网https://github.com/lxn/walk: "Go 1.7.x doesn't work with walk anymore, Make sure you use Go 1.8.x or later."
###
3、流程记录
安装walk库 go get https://github.com/lxn/walk
安装编译时依赖的库(rsrc,官网给出的定义是"Tool for embedding binary resources in Go programs.",这个是把资源二进制文件打入到go程序中,比如下文的manifest文件) go get github.com/akavel/rsrc
.manifest后缀文件放在源码main函数同级目录. .maifest文件直接可以在walk官网拷贝,这里照搬过来。
```go
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<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>
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
</assembly>
```
编译go build需要的syso文件。
rsrc -manifest test.manifest -o rsrc.syso
开发程序,官网demo
```go
package main
import (
"github.com/lxn/walk"
"github.com/lxn/walk/declarative"
"strings"
)
func main() {
var inTE, outTE *walk.TextEdit
MainWindow{
Title: "SCREAMO",
MinSize: Size{600, 400},
Layout: VBox{},
Children: []Widget{
HSplitter{
Children: []Widget{
TextEdit{AssignTo: &inTE},
TextEdit{AssignTo: &outTE, ReadOnly: true},
},
},
PushButton{
Text: "SCREAM",
OnClicked: func() {
outTE.SetText(strings.ToUpper(inTE.Text()))
},
},
},
}
Run()
}
```
###
go build -ldflags="-H windowsgui"
-ldflags="-H windowsgui" 是为了隐藏黑色的cmd界面。 不加默认启动2个界面
###
扩展
在网上看到了有人分享了一个很好的小软件(例子的地址:https://studygolang.com/articles/10755),就是用walk写的,可以学到很多写法,效果图如下。
~ ![image](d:/bb.jpg)
———————
###
版权声明:本文为CSDN博主「sthahahaa」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/bw761813/article/details/89673030
###
四、处理图像
创建、粘贴、裁剪
###
五、excel处理
> 1.tealeag\xlsx,
> 2.Excelize
###
六、网络
调用百度
###
七、字符串处理
###
八、正则表达式
###
九、鼠标键盘控制
###
十、时间
```go
"time"
time.Sleep(5e9),
time.Sleep(8 * time.Second)
```
###
十一、调用第三方包(B站讲解)
1.go modules
教程地址:https://b23.tv/BV1w64y197wo
###
十二、反射讲解(B站讲解)
教程地址:https://b23.tv/BV1V5411T7NH
###
十三、如何与其他语言联合使用
###
十四、并行处理 如何处理速度更快
有疑问加站长微信联系(非本文作者))