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