go
逝水-无痕
这个作者很懒,什么都没留下…
展开
-
Golang以匿名组合的方式实现继承
文章目录匿名组合继承非指针方式组合匿名组合具体参见:https://blog.csdn.net/wangkai_123456/article/details/107894993继承Golang提供了继承机制,但采用匿名组合的方式实现。非指针方式组合示例如下// 基类type Base struct { // 成员变量}func (b *Base) 函数名(参数列表) (返回值列表) { // 函数体}// 派生类type Derived struct {原创 2020-08-09 16:33:02 · 784 阅读 · 0 评论 -
Golang组合和匿名的区别
文章目录什么是组合?非匿名组合和匿名组合非匿名组合匿名组合什么是组合?一个结构体嵌套到另一个结构体,称作组合。示例如下:type Logger struct{}type Work struct{ log Logger}type Work2 struct{ log *Logger}如上边代码所示,Work类中定义了一个Logger类型的变量,这种是比较常见的引入方式,称之为非匿名组合非匿名组合和匿名组合非匿名组合如果一个struct嵌套了另一个【有名】的结构体,那么这个模式叫做原创 2020-08-09 15:57:19 · 904 阅读 · 0 评论 -
Golang数据校验validator
文章目录参考:https://github.com/go-playground/validatorhttps://blog.csdn.net/guyan0319/article/details/105918559/原创 2020-07-14 19:52:14 · 1661 阅读 · 0 评论 -
Golang读取Rows到map[string]interface{}中
文章目录func DoQuery(db *sql.DB, sqlInfo string, args ...interface{}) ([]map[string]interface{}, error) { rows, err := db.Query(sqlInfo, args...) if err != nil { return nil, err } columns, _ := rows.Columns() columnLength := len(columns) cache := make原创 2020-07-14 19:35:15 · 1662 阅读 · 0 评论 -
Golang中隐形的坑
文章目录copy函数copy函数数组切片内容复制,用于将内容从一个数组切片复制到另一个数组切片。如果加入的两个数组切片不一样大,就会按其中较小的那个数组切片的元素个数进行复制。slice1 := []int{1, 2, 3, 4, 5} slice2 := []int{5, 4, 3} copy(slice2, slice1) // 只会复制slice1的前3个元素到slice2中 copy(slice1, slice2) // 只会复制slice2的3个元素到slice1的前3个位置.原创 2020-07-14 17:22:38 · 155 阅读 · 0 评论 -
protobuf
错误:protoc --gogofast_out=. *.protogithub.com/gogo/protobuf/gogoproto/gogo.proto: File not found.api.proto:5:1: Import "github.com/gogo/protobuf/gogoproto/gogo.proto" was not found or had errors.原创 2020-05-12 19:55:53 · 624 阅读 · 0 评论 -
Golang unsafe的妙用
unsafe.Pointer其实就是类似C的void *,在golang中是用于各种指针相互转换的桥梁。uintptr是golang的内置类型,是能存储指针的整型,uintptr的底层类型是int,它和unsafe.Pointer可相互转换。uintptr和unsafe.Pointer的区别就是:unsafe.Pointer只是单纯的通用指针类型,用于转换不同类型指针,它不可以参与指针运算;而ui转载 2017-05-21 22:46:42 · 3649 阅读 · 1 评论 -
golang中的数组与切片
golang中,当用数组去初始化一个切片时,数组的地址即为&slice[0],例子如下:package mainimport ( "fmt" "math/rand" "net" "os" "time" "unsafe")func main() { for { pcRecvMag() time.Sleep(time.Second) }}func pcRec原创 2017-05-19 00:01:42 · 562 阅读 · 0 评论 -
golang中的数组与C中数组的区别
golang中的数组是这样说的: Arrays are values, not implicit pointers as in C.1、数组做参数时, 需要被检查长度.2、变量名不等于数组开始指针!3、不支持C中的*(ar + sizeof(int))方式的指针移动. 需要使用到unsafe包4、如果p2array为指向数组的指针, *p2array不等于p2array[0原创 2017-05-18 22:35:39 · 1660 阅读 · 0 评论 -
golang实现从串口读取GPS信息
GPS模块的数据格式对GPS模块的数据处理本质上还是串口通信程序设计,只是GPS模块的输出遵循固定的格式,通过字符串检索查找即可从模块发送的数据中找出需要的数据,常用的GPS模块大多采用NMEA-0183 协议。NMEA-0183 是美国国家海洋电子协会(National Marine Electronics Association)所指定的标准规格,这一标准制订所有航海电子仪器间的通讯标原创 2017-04-25 19:54:09 · 7592 阅读 · 0 评论 -
Golang协程调度
有时候可能会出现这种情况,一个无耻的goroutine阻止其他goroutine运行。当你有一个不让调度器运行的 for循环时,这就会发生。package mainimport "fmt"func main() { done := false go func(){ done = true }() for !done { }原创 2017-05-27 12:43:21 · 3116 阅读 · 0 评论 -
使用Golang实现简单Ping过程
摘要: Ping的基本原理是发送和接受ICMP请求回显报文,利用Go语言可以轻松实现这一过程,较之C/C++语言,Go的实现过程十分简单,效率和安全性也十分完美。引言 关于各种语言实现Ping已经是大家喜闻乐见的事情了,网络上利用Golang实现Ping已经有比较详细的代码示例,但大多是仅仅是实现了Request过程,而对Response的回显内容并没有做接收。而Pi转载 2017-03-28 10:45:01 · 7029 阅读 · 0 评论 -
Go语言特性挖掘
1、切片与隐藏数组参考:http://www.jb51.net/article/58379.htm2、range值传递参考:http://www.jb51.net/article/92401.htm3、Go语言修炼之道参考:http://www.jb51.net/article/62728.htm4、Go语言项目列表参考:https://github.com原创 2017-04-07 23:46:50 · 311 阅读 · 0 评论 -
golang slice 切片原理
golang 中的 slice 非常强大,让数组操作非常方便高效。在开发中不定长度表示的数组全部都是 slice 。但是很多同学对 slice 的模糊认识,造成认为golang中的数组是引用类型,结果就是在实际开发中碰到很多坑,以至于出现一些莫名奇妙的问题,数组中的数据丢失了。下面我们就开始详细理解下 slice ,理解后会对开发出高效的程序非常有帮助。这个是 slice 的数据结构,它很转载 2017-04-08 16:14:13 · 7802 阅读 · 2 评论 -
go语言选择语句 switch case
根据传入条件的不同,选择语句会执行不同的语句。下面的例子根据传入的整型变量i的不同而打印不同的内容:switch i { case 0: fmt.Printf("0") case 1: fmt.Printf("1") case 2: fallthrough case 3: fmt原创 2017-03-15 17:08:03 · 4948 阅读 · 0 评论 -
Go语言TCP Socket通信编程
Golang的主要 设计目标之一就是面向大规模后端服务程序,网络通信这块是服务端 程序必不可少也是至关重要的一部分。在日常应用中,我们也可以看到Go中的net以及其subdirectories下的包均是“高频+刚需”,而TCP socket则是网络编程的主流,即便您没有直接使用到net中有关TCP Socket方面的接口,但net/http总是用到了吧,http底层依旧是用tcp socket转载 2017-04-13 08:49:05 · 2928 阅读 · 0 评论 -
Go语言实现telnet远程登录
目前的linux服务器默认都未安装telnet服务,如需在linux服务器(如CentOS7)上安装telnet服务,可参考:http://www.centoscn.com/image-text/install/2015/0101/4402.htmltelnet-server默认监听的端口号为23默认情况下,linux不允许root用户以telnet方式登录linux主机原创 2017-04-14 08:47:09 · 10407 阅读 · 2 评论 -
Golang一键启动程序(windows平台 部署 微服务)
golang编译程序从后台运行,不出现dos窗口参考:https://my.oschina.net/u/173303/blog/174124golang程序调用python脚本参考:http://www.th7.cn/Program/Python/201604/847613.shtmlgolang实现不受限制地随时升级服务的方法参考:http://www.js-code.com原创 2017-05-02 23:00:17 · 6227 阅读 · 1 评论 -
Golang编译程序从后台运行,不出现dos窗口
golang编译程序从后台运行,不出现dos窗口的方法如下:配置: go build -ldflags "-H windowsgui"lite IDE配置 菜单 编译→编译配置在“自定义”页面下的 BUILDAGRS 后添加 -ldflags "-H windowsgui"原文地址:http://www.fx114.net/qa-200-456949.aspx原创 2017-05-04 09:59:20 · 6961 阅读 · 0 评论 -
Golang的switch和select用法
golang 的 select 的功能和 select, poll, epoll 相似, 就是监听 IO 操作,当 IO 操作发生时,触发相应的动作。示例:ch1 := make (chan int, 1)ch2 := make (chan int, 1)...select {case <-ch1: fmt.Println("ch1 pop one element"原创 2017-05-23 15:21:42 · 2387 阅读 · 0 评论 -
Go语言版crontab
1、cron 表达式的基本格式用过 linux 的应该对 cron 有所了解。linux 中可以通过 crontab -e 来配置定时任务。不过,linux 中的 cron 只能精确到分钟。而我们这里要讨论的 Go 实现的 cron 可以精确到秒,除了这点比较大的区别外,cron 表达式的基本语法是类似的。(如果使用过 Java 中的 Quartz,对 cron 表达式应该比较了解,而且它转载 2017-02-07 16:28:25 · 1565 阅读 · 0 评论