Go语言中文网 为您找到相关结果 216

protobuf 验证器

# proto 中注入 tag, 验证 #### 1. 介绍 - 1. 对 `xxx.pd.go` 文件中的 `struct` 注入自定义的 `tag` - 2. 通过验证器对内容进行验证, 验证器暂只支持: 必填, 长度, 多个一个必填 #### 2. 注入工具使用 - 1. 先下载本项目: `go get -u gitee.com/xuesongtao/protoc-go-valid` - 2. `protoc-go-valid` 命令操作, 如下: - 2.1 `protoc-go-valid -init="true"` - 2.1 `protoc-go-valid -d="待注入的目录"` - 2.2 `prot...阅读全文

Go语言中其他数据与字符串类型的转换

## 1 概述 Go语言是强类型语言,因此总会需要将字符串转成需要的类型。比如整型和字符串转换,字符串和布尔型的转换等。本文就介绍如何完成这些转换,以下是Go语言关于字符串转换的整理说明,主要是与切片类型的转换,和 strconv 包的使用。 ## 2 与切片的转换 切片类型可以和字符串类型相互转换。 ``` fmt.Println([]rune("Hello小韩说课")) // [72 101 108 108 111 23567 38889 35828 35838] fmt.Println(string([]rune{72, 101, 108, 108, 111, 23567, 38889, 35828, 35838})) // Hello小韩说课 fmt.Println([]byte("...阅读全文

博文 2018-10-30 22:28:30 hanzkering

Go语言单链表

package main import "fmt" type Node struct { data int next *Node } func Shownode(p *Node){ //遍历 for p != nil{ fmt.Println(*p) p=p.next //移动指针 } } func main() { var head = new(Node) head.data = 0 var tail *Node tail = head //tail用于记录最末尾的结点的地址,刚开始tail的的指针指向头结点 for i :=1 ;i<10;i++{ var node = Node{data:i} (*tail).next = &node tail = &node } Shownode(h...阅读全文

博文 2019-12-25 19:33:14 huang_he_87

golang 学习笔记 1.6 字符串

1.6 字符串 字符串是不可变值类型,内部用指针指向 UTF-8 字节数组。 默认值是空字符串 ""。 用索引号访问某字节,如 s[i]。 不能用序号获取字节元素指针,&s[i] 非法。 不可变类型,无法修改字节数组。 字节数组尾部不包含 NULL。 struct String { byte* str; intgo len; }; 使用索引号访问字符 (byte)。 s := "abc" println(s[0] == '\x61', s[1] == 'b', s[2] == 0x63) //输出: true true true 使用 " ` " 定义不做转义处理的原始字符串,支持跨行。 s := `a b\r\n\x00 c` println(s) // 输出: a b\r\n\x00 c...阅读全文

博文 2019-03-22 05:34:40 Diogoxiang

Golang 问题点(一)

1. make和new的区别: make和new都在堆上分配内存. 但是他们的行为不同, 适用于不同的类型. new(T) 返回的是T的指针, 其中T为一个类型, 不是一个值, 为T类型新值分配内存空间并将此空间初始化为T类型的的零值, 返回的是新值得地址,即T的指针*T的值, 该指针指向T的新分配的零值. make(T, args) 用来为slice,map货channel类型分配内存和初始化一个对象, 返回类型的引用we不是指针, 返回值根据T的不同而不同. 简单来讲: new 的作用是初始化一个指向类型的指针(*T),make 的作用是为 slice,map 或 chan 初始化并返回引用(T) testNew := new([2]int) fmt.Println(testNew) /...阅读全文

博文 2020-02-27 07:32:41 董小贱

golang快速入门[2.2]-go语言开发环境配置-macOS

macos安装Go语言开发包 配置go语言的开发环境的第一步是要在go官网下载页面下载开发包 macOS需要下载pkg后缀文件 macOS和iOS操作系统Apple软件包使用.pkg扩展名,在内部使用Xar格式 image Mac OS 的Go语言开发包是 .pkg 格式的,双击我们下载的安装包即可开始安装,一路点击“继续”即可。 image 安装包会默认安装在 /usr/local 目录下,如下所示。 image 这个目录的结构遵守 GOPATH 规则,后面的章节会提到这个概念。目录中各个文件夹的含义如下表所示。 image 安装完成之后,在终端运行 go version,如果显示类似下面的信息,表明安装成功。 » go version jackson@192 go version go1...阅读全文

博文 2020-02-12 07:33:00 唯识相链2

golang快速入门[2.1]-go语言开发环境配置-windows

golang快速入门[2.1]-go语言开发环境配置-windows接下来,我们将讲解在windows、linux、macos三大平台上配置go语言的开发环境。windows安装Go语言开发包配置go语言的开发环境的第一步是要在go官网下载页面下载开发包windows需要下载msi后缀文件,msi是windows下的安装包文件格式,用于安装,存储和删除程序这里我们下载的是 64 位的开发包,如果读者的电脑是 32 位系统或者有特殊的需求,则需要下载 32 位的开发包在上图所示页面中向下滚动即可找到 32 位开发包的下载地址,如下图所示双击我们下载好的Go语言开发包即可启动安装程序,如下图所示,这是Go语言的用户许可协议,无需管它,直接勾选“I accept …”然后点击“Next”即可。在 ...阅读全文

博文 2020-02-07 12:33:13 jonson_jackson

软件结构很重要!嵌入式C语言修炼之道

模块划分的"划"是规划的意思,意指怎样合理的将一个很大的软件划分为一系列功能独立的部分合作完成系统的需求。C语言作为一种结构化的程序设计语言,在模块的划分上主要依据功能(依功能进行划分在面向对象设计中成为一个错误,牛顿定律遇到了>相对论),C语言模块化程序设计需理解如下概念:(1) 模块即是一个.c文件和一个.h文件的结合,头文件(.h)中是对于该模块接口的声明;(2) 某模块提供给其它模块调用的外部函数及数据需在.h中文件中冠以extern关键字声明;(3) 模块内的函数和全局变量需在.c文件开头冠以static关键字声明;(4) 永远不要在.h文件中定义变量!定义变量和声明变量的区别在于定义会产生内存分配的操作,是汇编阶段的概念;而声明则只是告诉包含该声明的模块在连接阶段从其它模块寻找外...阅读全文

博文 2019-01-17 17:14:57 wangzijuan

golang-nsq系列(一)--初识

nsq 最初是由 bitly 公司开源出来的一款简单易用的分布式消息中间件,它可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息。 nsq 它具有以下特性: 分布式。它提供了分布式的、去中心化且没有单点故障的拓扑结构,稳定的消息传输发布保障,能够具有高容错和高可用特性。 易于扩展。它支持水平扩展,没有中心化的消息代理(Broker),内置的发现服务让集群中增加节点非常容易。 运维方便。它非常容易配置和部署,灵活性高。 高度集成。现在已经有官方的Golang、Python和JavaScript客户端,社区也有了其他各个语言的客户端库方便接入,自定义客户端也非常容易。 1. 首先到官方文档看用法: https://nsq.io/overview/quick_start.html q...阅读全文

博文 2019-08-19 02:32:44 热爱coding的稻草

golang快速入门[2.2]-go语言开发环境配置-macOS

golang快速入门[2.2]-go语言开发环境配置-macOSmacos安装Go语言开发包配置go语言的开发环境的第一步是要在go官网下载页面下载开发包macOS需要下载pkg后缀文件macOS和iOS操作系统Apple软件包使用.pkg扩展名,在内部使用Xar格式Mac OS 的Go语言开发包是 .pkg 格式的,双击我们下载的安装包即可开始安装,一路点击“继续”即可。双击我们下载好的Go语言开发包即可启动安装程序,如下图所示,这是Go语言的用户许可协议,无需管它,直接勾选“I accept …”然后点击“Next”即可。安装包会默认安装在 /usr/local 目录下,如下所示。这个目录的结构遵守 GOPATH 规则,后面的章节会提到这个概念。目录中各个文件夹的含义如下表所示。目录名说...阅读全文

博文 2020-02-07 19:33:10 jonson_jackson

golang快速入门[2.3]-go语言开发环境配置-linux

golang快速入门[2.3]-go语言开发环境配置-linuxlinux安装Go语言开发包默认读者会使用linux的基本操作配置go语言的开发环境的第一步是要在go官网下载页面下载开发包linux需要下载tar.gz压缩文件这里我们下载的是 64 位的开发包,如果读者的电脑是 32 位系统或者有特殊的需求,则需要下载 32 位的开发包在上图所示页面中向下滚动即可找到 32 位开发包的下载地址,如下图所示注意,如果在ubuntu这样有图形化界面的linux操作系统,我们可以直接下载没有图形化界面时,我们需要在命令行中操作第一步:下载开发包>> wget https://dl.google.com/go/go1.13.7.linux-amd64.tar.gz --2020-02-06 14:1...阅读全文

博文 2020-02-07 19:33:11 jonson_jackson

图解kubernetes服务打散算法的实现源码

在分布式调度中为了保证服务的高可用和容灾需求,通常都会讲服务在多个区域、机架、节点上平均分布,从而避免单点故障引起的服务不可用,在k8s中自然也实现了该算法即SelectorSpread, 本文就来学习下这个算法的底层实现细节 1. 设计要点 1.1 zone与node zone即代表一个区域,node则是一个具体的节点,而该打散算法的目标就是将pod在zone和node之间进行打散操作 1.2 namespace namespace是k8s中进行资源隔离的实现,同样的筛选也是如此,在筛选的过程中,不同namespace下面的pod并不会相互影响 1.3 计数与聚合 SelectorSpread算法是scheduler中优先级算法的一种,其实现了优先级算法的map/reduce方法,其中ma...阅读全文

golang快速入门[2.3]-go语言开发环境配置-linux

linux安装Go语言开发包 默认读者会使用linux的基本操作 配置go语言的开发环境的第一步是要在go官网下载页面下载开发包 linux需要下载tar.gz压缩文件 image 这里我们下载的是 64 位的开发包,如果读者的电脑是 32 位系统或者有特殊的需求,则需要下载 32 位的开发包 在上图所示页面中向下滚动即可找到 32 位开发包的下载地址,如下图所示 image 注意,如果在ubuntu这样有图形化界面的linux操作系统,我们可以直接下载 没有图形化界面时,我们需要在命令行中操作 第一步:下载开发包 >> wget https://dl.google.com/go/go1.13.7.linux-amd64.tar.gz --2020-02-06 14:18:58-- http...阅读全文

博文 2020-02-12 07:32:58 唯识相链2

消息队列 NSQ 源码学习笔记 (四)

> **nsq** 工具集学习 ### nsq\_to\_nsq nsq 作为消息队列,有个优势是nsqd 各节点之间是不关联的,如果一个节点出了问题,仅仅影响该节点下的topic,channel,以及相关的生产者、消费者。 也就是官方说明的特性第一条:**no SPOF** ( single point of failure 单点故障)。好处不言而喻,坏处也是有的,如果节点出问题,没有备份数据无法恢复。 所以,在官方提供了 nsq\_to\_nsq 作为 nsqd 节点复制的工具,用于做 nsqd 节点数据的备份, 或者也可以用于数据的分发。 类似于MirrorMaker. #### 特性: - 支持将M 个 topic 的消息 publish 到 N 个 nsqd...阅读全文

DjanFey的基础库解读--bufio包(bufio.go)

package my_bufio import ( "bytes" "errors" "io" "unicode/utf8" ) const ( defaultBufSize = 4096 ) var ( // 非法使用UnreadByte ErrInvalidUnreadByte=errors.New("bufio: invalid use of UnreadByte") // 非法使用UnreadRune ErrInvalidUnreadRune = errors.New("bufio: invalid use of UnreadRune") // buffer已满 ErrBufferFull = errors.New("bufio: buffer full") // count为负 E...阅读全文

博文 2020-03-14 23:41:34 DjanFy

学习Go-第一天-安装

下载Go语言开发包 大家可以在Go语言官网(https://golang.google.cn/dl/)下载 Windows 系统下的Go语言开发包,如下图所示。 Go语言安装包下载页面 这里我们下载的是 64 位的开发包,如果读者的电脑是 32 位系统的话,则需要下载 32 位的开发包,在上图所示页面中向下滚动即可找到 32 位开发包的下载地址,如下图所示。 其他版本的Go语言安装包 注意:下载 Windows 版本的Go语言开发包时尽量选择 MSI 格式,因为它可以直接安装到系统,不需要额外的操作。 安装Go语言开发包 双击我们下载好的Go语言开发包即可启动安装程序,如下图所示,这是Go语言的用户许可协议,无需管它,直接勾选“I accept ...”然后点击“Next”即可。 许可协议 ...阅读全文

博文 2020-04-26 13:33:09 小刺挠儿