随笔分类 -  golang

摘要:一直想开发一款串口调试助手软件,更确切的说是需要了解串口调试助手怎样设计的。 最近做windows串口编程时搜索到一些开源的,简单记录如下: 1. https://github.com/movsb/common win32平台串口调试助手 https://blog.twofei.com/566/ 开 阅读全文
posted @ 2019-12-14 23:00 yuxi_o 阅读(741) 评论(0) 推荐(0)
摘要:一. 如何独立开发一个完整应用 https://www.zhihu.com/column/health-go 知乎 使用上线APP “靓手艺”作为实战案例进行经验分析介绍 二. Go并发编程案例解析 https://m.imooc.com/learn/982?mid=17082 慕课网 通过一个真实 阅读全文
posted @ 2019-12-08 17:58 yuxi_o 阅读(4863) 评论(0) 推荐(0)
摘要:一. 简述 Go语言中自带有一个轻量级的测试框架testing和自带的go test命令来实现单元测试和性能测试。 go test [-c] [-i] [build flags] [packages] [flags for test binary] $ go test -race -cover -c 阅读全文
posted @ 2019-12-08 17:45 yuxi_o 阅读(564) 评论(0) 推荐(0)
摘要:golang按位取反符号和异或符号都是^。 要限定类型或位数,否则按int打印(打印负数)。 数据存储编解码 float32储存为4个字节,int16存储为两个字节,数据大小端怎样存储? 参考:edgexfoundry/device-sdk-go/pkg/commandvalue.go 借助io.R 阅读全文
posted @ 2019-12-08 17:36 yuxi_o 阅读(834) 评论(0) 推荐(0)
摘要:综述 变量声明时未赋初值,则变量被自动赋值为该类型的零值(固定值) func new(Type) *Type new()返回一个指针,指向新分配的该类型的零值,不是空指针(nil)。the value returned is a pointer to a newly allocated zero v 阅读全文
posted @ 2019-12-08 17:31 yuxi_o 阅读(2384) 评论(0) 推荐(0)
摘要:JSON(Javascript Object Notation)是一种轻量级的数据交换语言,以文字为基础,具有自我描述性且易于让人阅读。尽管JSON是Javascript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。JSON与XML最大的不同在于XML是一个完整 阅读全文
posted @ 2019-11-10 11:18 yuxi_o 阅读(1876) 评论(0) 推荐(0)
摘要:一. MVC MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写 阅读全文
posted @ 2019-10-07 22:27 yuxi_o 阅读(342) 评论(0) 推荐(0)
摘要:1. 标准输入输出 os提供了标准输入输出文件: 2. os包读取文件 文件使用os.File类型的指针来表示,也叫作文件句柄。File是struct,表示一个open file descriptor。标准输入输出os.Stdin/os.Stdout都是*os.File。 os.File与unix 阅读全文
posted @ 2019-10-03 18:10 yuxi_o 阅读(2415) 评论(0) 推荐(0)
摘要:1. 可接收变参命令 package main import ( "fmt" "os" "os/exec" "strings" ) func main(){ sliceFunc(os.Args[1:]...) } func sliceFunc(cmd... string){ fmt.Println( 阅读全文
posted @ 2019-10-03 13:35 yuxi_o 阅读(6682) 评论(0) 推荐(0)
摘要:在go1.11版本前,想要对go语言包进行管理,只能依赖第三方库实现,比如Vendor,GoVendor,GoDep,Dep,Glide等等。 1. 开启GO111MODULE 用环境变量 GO111MODULE 开启或关闭模块支持,它有三个可选值:off、on、auto,默认值是 auto。 GO 阅读全文
posted @ 2019-10-01 21:06 yuxi_o 阅读(35733) 评论(0) 推荐(1)
摘要:golang 的编译(不涉及 cgo 编译的前提下)默认使用了静态编译,不依赖任何动态链接库。 这样可以任意部署到各种运行环境,不用担心依赖库的版本问题。只是体积大一点而已,存储时占用了一点磁盘,运行时,多占用了一点内存。早期动态链接库的产生,是因为早期的系统的内存资源十分宝贵,由于内存紧张的问题在 阅读全文
posted @ 2019-10-01 20:19 yuxi_o 阅读(8994) 评论(0) 推荐(1)
摘要:1. TCP/UDP Server/Client开发 net包提供network I/O开发接口,包括TCP/IP、UDP、DNS和Unix domain sockets。 常用开发一般仅需要最基础接口或函数: 服务器:net.Listen(),net.Accept() ln, err := net 阅读全文
posted @ 2019-08-07 22:54 yuxi_o 阅读(1189) 评论(0) 推荐(0)
摘要:,ok,第一个参数是一个值或者nil,第二个参数是true/false或者一个错误error。在一个需要赋值的if条件语句中,使用这种模式去检测第二个参数值会让代码显得优雅简洁。这种模式在go语言编码规范中非常重要。下面总结了所有使用这种模式的例子: 1. 在函数返回时检测错误 这段代码中的函数将错 阅读全文
posted @ 2019-07-03 21:05 yuxi_o 阅读(5574) 评论(0) 推荐(0)
摘要:反射就是程序能够在运行时检查变量和值,求出它们的类型。 reflect包实现运行时反射。 创建一个接收任何数据类型任何数值的查询string: func createQuery(q interface{}) string { } reflect.Type 表示 interface{} 的具体类型,而 阅读全文
posted @ 2019-07-03 20:58 yuxi_o 阅读(247) 评论(0) 推荐(0)
摘要:面向对象编程三大特点:封装、继承、多态。 1. 构造函数 Go中结构体实现封装。 Go不支持构造器。如果某类型的零值不可用,需要提供NewT(parameters)函数,用来初始化T类型的变量。按照Go的惯例,应该把创建T类型变量的函数命名为NewT(parameters),若一个包中只含有一种类型 阅读全文
posted @ 2019-07-03 20:49 yuxi_o 阅读(1174) 评论(0) 推荐(0)
摘要:1. 错误 1.1 error类型 错误用内建的error类型来表示(go/src/builtin/builtin.go)。 type error interface { Error() string } error 有了一个签名为 Error() string 的方法。所有实现该接口的类型都可以当 阅读全文
posted @ 2019-07-03 20:46 yuxi_o 阅读(445) 评论(0) 推荐(0)
摘要:1. 标准输入输出 os提供了标准输入输出: 2. Scan 从键盘和标准输入os.Stdin读取输入,最简单的方法是使用fmt包提供的Scan和Sscan开头的函数。 Scanln 扫描来自标准输入的文本,将空格分隔的值依次存放到后续的参数内,直到碰到换行。 Scanf的第一个参数是格式串,其他都 阅读全文
posted @ 2019-07-03 20:37 yuxi_o 阅读(1331) 评论(0) 推荐(0)
摘要:0. CSP--Communicating Sequential Process Don't communicate by sharing memory; share memory by communicating. CSP模型是上个世纪七十年代提出的,用于描述两个独立的并发实体通过共享的通讯 ch 阅读全文
posted @ 2019-07-03 20:29 yuxi_o 阅读(550) 评论(0) 推荐(0)
摘要:一. go方法 go方法:在函数的func和函数名间增加一个特殊的接收器类型,接收器可以是结构体类型或非结构体类型。接收器可以在方法内部访问。创建一个接收器类型为Type的methodName方法。 func (t Type) methodName(parameter list) { } go引入方 阅读全文
posted @ 2019-06-25 19:04 yuxi_o 阅读(776) 评论(0) 推荐(0)
摘要:1. hello-world package main import "fmt" func main(){ fmt.Println("Hello world, Go Go!"); fmt.Printf("type of Hello is %T\n", "Hello") } package main- 阅读全文
posted @ 2019-06-14 19:36 yuxi_o 阅读(586) 评论(0) 推荐(0)