golang

centos 安装glide工具(golang)笔记

匿名 (未验证) 提交于 2019-12-03 00:34:01
参照官网 https://glide.sh/ 我是在官网(https://glide.sh/)中下载的release包,因为使用命令: curl https://glide.sh/get | sh 无法安装。 在官网下载包要注意不要下载错误的安装包。 我安装的是centos,所以需要下载安装包glide-v0.13.0-linux-386.tar.gz,因为之前下载错安装包glide-v0.13.1-linux-arm64.tar.gz,解压过后会提示无法执行二进制文件。 原文:https://www.cnblogs.com/VinceLiu/p/9222030.html

centos7 Golang vim IDE

匿名 (未验证) 提交于 2019-12-03 00:29:01
接触Golang之后使用过许多的编辑器比如lite,sublime3,goland,lite更适合在windows环境使用,对于非destop版本的Linux就不太适用了,在linux下还是直接上神器vim了,为了快速开发自然要安装许多便捷的插件 首先vim的插件安装有两种形式,一直直接自己安装到~/.vim/plugin目录下 另外一种是使用插件管理器Vundle(还有其他的插件管理器) //hello.go package main import "fmt" func main() { } gmarik/Vundle.vim pathogen mkdir ~/.vim/bundle git clone https://github.com/gmarik/Vundle.vim.git ~/.vimrc 附录为完整的.vimrc文件 filetype off filetype plugin indent off set rtp+=$VIM/vimfiles/bundle/vundle/ "rc后的参数表示Vundle自动下载安装插件的位置,为空放在~/.vim/下 call vundle#rc('$VIM/vimfiles/bundle/') Bundle 'gmarik/vundle' filetype plugin indent on syntax on ~/.vimrc

Golang 微服务框架 - Micro 介绍

匿名 (未验证) 提交于 2019-12-03 00:29:01
官方网站: micro.mu 官方文档: micro.mu/docs 源码仓库: github.com/micro/micro Micro 是一个工具集合, 通过将微服务架构抽象成一组工具。隐藏了分布式系统的复杂性,为开发人员提供了更简洁的概念。 Micro 主要有三部分组成: go-micro - 开发 sdk, 包含了 RPC 框架,服务发现, 消息订阅/ 发布 等功能. go-plugins - micro 插件 micro - Micro 提供的管理工具, 包含了 API 网关, 仪表盘, RPC 代理等功能. go-micro Micro 的主要开发 SDK, 里面包含了开发所用到的常用功能模块, 主要模块之间关系如下: 模块 说明 services 微服务, 提供了对微服务功能开发的封装, 通过它可以快速创建一个微服务. client RPC 客户端, 提供了诸如 服务发现 / 负载均衡 / RPC 代理和调用。以及失败时的重试 / 超时 / 上下文等功能。 server RPC 服务端, 提供了如何实现 RPC 请求的方法, 功能逻辑主要使用这个实现. codec 数据编码 模块, 提供将程序调用数据转换成 RPC 调用数据的功能. 目前支持: json / protobuf broker pub/sub 模块, 提供事件 发布 / 订阅 功能, 目前支持: nats

Golang基础--10--反射reflection

匿名 (未验证) 提交于 2019-12-03 00:27:02
Ŀ¼ Ŀ¼ 反射可大大提高程序的灵活性,使得interface{}有更大的发挥余地 反射使用TypeOf和ValueOf函数从 接口 中获取目标对象信息 type User struct{ Id int Name string Age int } func (u User) Hello() { fmt .Println ( "Hello World." ) } func main(){ u := User{ 1 , "kk" , 12 } Info(u) } func Info(o interface{}){ //获取类型信息 t := reflect .TypeOf (o) fmt .Println ( "Type:" ,t .Name ()) //用以判断传入的类型是否是struct类型,而不是指针什么的 if k:=t .Kind () ;k!=reflect.Struct { fmt .Println ( "XXXXXXXXXX" ) return } //获取字段信息 v := reflect .ValueOf (o) fmt .Println ( "Field:" ) for i:= 0 ;i<t.NumField();i++ { f := t .Field (i) val := v .Field (i) .Interface () fmt .Printf ( "%6s

golang for range

心不动则不痛 提交于 2019-12-03 00:26:57
如下两种写法是等价的(错误): func findNegative(in []int) []*int { ret := make([]*int,0) for _,v := range in { if v < 0 { ret = append(ret, &v) } } return ret } func findNegative(in []int) []*int { ret := make([]*int,0) var tmp int for i:=0;i< len(in) ;i++ { tmp = in[i] if tmp < 0 { ret = append(ret,&tmp) } } return ret } 正确写法: func findNegative(in []int) []*int { ret := make([]*int,0) for _,v := range in { if v < 0 { tmp := v ret = append(ret, &tmp) } } return ret } for idx,item := range 中的 idx , item 是临时变量,不能把其地址直接返回使用,需要拷贝后取地址 来源: https://www.cnblogs.com/andyhe/p/11768948.html

golang使用注意事项

青春壹個敷衍的年華 提交于 2019-12-03 00:23:27
1.可以给类型取别名,但是该类型和别名是两个不同的类型:   type myInt int 2.go支持可变参数:args...   0个或多个参数:func sum(args... int) sum int {}   1个或多个参数:func sum(n int, args... int) sum int {} 3.init()函数是初始化函数,如果有全局变量,执行顺序为:全局变量——> init()——>main() 4.匿名函数: res := func(n1 int, n2 int) int { return n1 + n2 }(10, 20) fmt.Println(res) a := func(n1 int, n2 int) int { return n1 - n2 } fmt.Println(a(10, 5)) 5.全局匿名函数: var( Fun1 = func(n1 int, n2 int) int { return n1 * n2 } ) func main() { b := Fun1(10, 5) fmt.Println(b) } 来源: https://www.cnblogs.com/xiangxiaolin/p/11768902.html

golang中map声明及初始化

匿名 (未验证) 提交于 2019-12-03 00:22:01
1 map简介 2 map声明 var map变量名 map[key] value var numbers map[string] int var myMap map[string] personInfo type personInfo struct { ID string Name string Address string } 3 map初始化 rating := map[string] float32 {"C":5, "Go":4.5, "Python":4.5, "C++":2 } myMap := map[string] personInfo{"1234": personInfo{"1", "Jack", "Room 101,..."},} numbers := make(map[string] int) myMap = make(map[string] personInfo) myMap = make(map[string] personInfo, 5) numbers["one"] = 1 myMap["1234"] = personInfo{"1", "Jack", "Room 101,..."} 4 map元素查找 value, ok := myMap["1234"] if ok{ //处理找到的value } 5 map元素修改(赋值) numbers["one

GoLang 单链表插入

匿名 (未验证) 提交于 2019-12-03 00:22:01
package main import ( "fmt" "math/rand" ) type Student struct { Name string Age int Score float32 Next *Student } func trans(p *Student) { // 遍历函数 for p != nil { fmt.Println(*p) p= p.Next } } func InsertTail(p *Student) { //尾插法插入10个元素 var tail = p for i:=0; i< 10; i++ { stu := &Student{ Name: fmt.Sprintf("stu%d", i), Age: rand.Intn(100), Score: rand.Float32()*100, } tail.Next = stu tail = stu } } func InsertHead(p **Student) { //头插法 for i:=0; i<10; i++ { stu := Student { Name: fmt.Sprintf("stu%d", i), Age: rand.Intn(100), Score:rand.Float32()* 100, } stu.Next = *p *p = &stu } //删除指定元素 func

Golang――22_网络编程

匿名 (未验证) 提交于 2019-12-03 00:22:01
22 网络编程 Ŀ¼ 22 网络编程 22.1 网络概述 22.1.1 网络协议 第一次,传输文件名,接收方接收到文件名,应答OK给发送方; 第二次,发送文件的尺寸,接收方接收到该数据再次应答一个OK; 第三次,传输文件内容。同样,接收方接收数据完成后应答OK表示文件内容接收成功。 22.1.2 分层模型 1.网络分层架构 1)物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。 2)数据链路层:定义了如何让格式化数据以帧为单位进行传输,以及如何控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。如:串口通信中使用到的115200、8、N、1。 3)网络层:在位于不同地理位置的网络中的两个主机系统之间提供链接和路径选择。Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种链接的层。 4)传输层:定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据

使用golang实现计算CRC-16(modbus)

匿名 (未验证) 提交于 2019-12-03 00:18:01
通信领域中计算CRC是一种常用模式,现在使用golang来计算一组数据的校验值 首先给出计算参考 数据组 CRC-16 modbus-crc 01 02 03 04 2BA1 A12B 调用CheckSum 示例 m_data := [] byte { 0x01 , 0x02 , 0x03 , 0x04 } //创建Byte切片 checksum := CheckSum(m_data) //调用计算CRC函数 CheckSum fmt.Printf( "check sum:%X \n" ,checksum) 输出结果: check sum:2BA1 int16buf := new(bytes .Buffer ) //构建int16 输出 binary .Write (int16buf,binary .LittleEndian ,checksum) //将int16 从小端转换为 byte数组 fmt .Printf ( "write buf is: %X" ,int16buf .Bytes ()) write buf is: A12B fmt.Printf( "output-before:%X \n" ,m_data) m_data = append(m_data,int16buf.Bytes() ... ) fmt.Printf( "output-after:%X \n" ,m