go 语言学习框架

xiaojun1195 · 2021-06-26 22:59:28 · 2579 次点击 · 预计阅读时间不到 1 分钟 · 大约8小时之前 开始浏览    
这是一个创建于 2021-06-26 22:59:28 的文章,其中的信息可能已经有所发展或是发生改变。

go 语言学习框架 2021.6.26

###感悟:创新和效率是先进的两个方向。达不到专业水平,无意义-因为没人会为业余水平付费。

### 一、对文本文件进行读写 参考文章:https://studygolang.com/articles/2073?fr=sidebar

>1.覆盖写入
2.追加写入
3.整体读出
4.按行读出
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官网拷贝,这里照搬过来。

<?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

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 ———————

### 版权声明:本文为CSDN博主「sthahahaa」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/bw761813/article/details/89673030

### 四、处理图像 创建、粘贴、裁剪

### 五、excel处理

> 1.tealeag\xlsx,
> 2.Excelize

### 六、网络 调用百度

### 七、字符串处理

### 八、正则表达式

### 九、鼠标键盘控制

### 十、时间

    "time"
      time.Sleep(5e9),
      time.Sleep(8 * time.Second)

### 十一、调用第三方包(B站讲解) 1.go modules 教程地址:https://b23.tv/BV1w64y197wo

### 十二、反射讲解(B站讲解) 教程地址:https://b23.tv/BV1V5411T7NH

### 十三、如何与其他语言联合使用

### 十四、并行处理 如何处理速度更快


有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2579 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传