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

Golang笔记-基准测试

上一篇写了些简单的单元测试,这一篇来看看go中的基准测试。在go中基准测试也是开箱即用的。使用testing.B结构对象。 需要测试的代码 我们依然用上一篇的代码结构 │ main.go │ main_test.go main.go func JoinStrUseSprint(a,b string) string { return fmt.Sprintf("%s%s",a,b) } func JoinStrUseNor(a,b string) string { return a+b } 创建一个基准测试 创建普通单元测试我们使用TestFunc来定义。创建基准测试我们需要使用BenchmarkFunc来定义。 func TestJoinStrUseNor(t *testing.T) { s ...阅读全文

博文 2020-05-21 22:32:42 旧梦发癫

老虞学GoLang笔记-常量

开发十年,就只剩下这套Java开发体系了 >>> 常量 常量和C#中的概念相同,在编译期被创建。因为在编译期必须确定其值,因此在声明常量时有一些限制。 其类型必须是:数值、字符串、布尔值 表达式必须是在编译期可计算的 声明常量的同时必须进行初始化,其值不可再次修改 Doc http://golang.org/doc/go_spec.html#Constants http://golang.org/doc/go_spec.html#Constant_expressions http://golang.org/doc/go_spec.html#Constant_declarations http://golang.org//doc/go_spec.html#Iota 语法 const关键字用于声...阅读全文

Golang中make和new的区别

1:new:func new(Type) *Type 接受一个参数,这个参数是一种类型,而不是一个值,分配好内存后,返回一个指向该类型内存地址的指针,这个指针指向的内容的值为该类型的零值。对于不同的数据类型,零值的意义是完全不一样的。比如,对于bool类型,零值为false;int的零值为0;string的零值是空字符串2:make:func make(t Type, size ...IntegerType) Type,具体而言,有如下几种用法:(1)make(map[string]string):即缺少长度的参数,只传类型,这种用法只能用在类型为map或chan的场景(2)make([]int, 2):指定了长度,例如make([]int, 2)返回的是一个长度为2的slice(3)mak...阅读全文

博文 2020-04-17 07:32:44 普朗tong

如何0成本在github上构建CI

image 现代软件的研发流程基本上均会配备一定程度的CI/CD(这篇文章解释了为何需要在企业里实施CI/CD),整个流程主要分为CI和CD部分,这篇文章将围绕CI部分展开,并通过一个具体的例子解释如何0成本在github上构建CI。构建CI的最佳实践离不开Trunk Based Development的分支策略,感兴趣的读者可以通过这篇文章来了解什么是Trunk Based Development。在github上构建CI有2个好处:无需任何费用和有大量可以用于构建CI的模块,借助这2个好处,小规模团队可以快速地搭建还不错的CI流程。接下来,让我们结合一个使用Go编写的Hello World例子以及基于Trunk-Based Development模式来构建这个CI流程。 这篇文章将分为以...阅读全文

博文 2020-06-06 11:32:44 云端漫步_2cloudlab

GO学习笔记 - 命令行解析

本文主题:基于os.Args与flag实现Golang命令行解析。 小慢哥的原创文章,欢迎转载 目录 ▪ 一. os.Args▪ 二. flag▪ 三. 结合os.Args与flag实现子命令▪ 附. 参考文档 一. os.Args os.Args用于获取通过命令行传入的参数 ▷ os.Args[0]:程序执行路径▷ os.Args[1]:第1个参数▷ os.Args[2]:第2个参数▷ len(os.Args):参数数量 示例如下 package main import ( "fmt" "os" ) func main() { fmt.Println("Program:", os.Args[0]) for i, v := range os.Args[1:] { fmt.Printf("Ar...阅读全文

博文 2019-07-22 04:03:10 小慢哥

leetcode_52

Golang: 思路:和51是一个问题 注意:这里需要注意下:因为不想使用list去存储所有出现的结果(会导致空间复杂度变高),所以我使用了一个全局变量totalRes来表示单次测试的结果,但因为平台运行测试用例的机制,是会使用一段代码一次性跑多个测试用例。所以,每次运行totalNQueens这个方法时,都需要将totalRes置零,否则会报错。 不通过示例如上图 var totalRes int func main() { fmt.Println(totalNQueens(1)) } func totalNQueens(n int) int { totalRes=0 //这里每次使用都需要置零,否则会不通过 chessboard:=make([]int,n) placeQueen(che...阅读全文

博文 2020-01-26 20:32:40 淳属虚构

26. Go 语言中通道死锁经典错误案例详解

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:golang.iswbm.com 我的 Github:github.com/iswbm/GolangCodingTime 刚接触 Go 语言的信道的时候,经常会遇到死锁的错误,而导致这个错误的原因有很多种,这里整理了几种常见的。 fatal error: all goroutines are asleep - deadlock!复制代码错误示例一 看下面这段代码 package main import "fmt"...阅读全文

博文 2020-06-03 10:34:36 王一白

使用shuttle实现bytom上跨链资产交换

最近基于比原链上的不同资产交换工具shuttle非常抢眼,因为该工具不仅可以实现同一条链上的不同资产进行交换,还可以实现不同区块链平台上的多种资产进行交换。该工具奠定了资产在交易的过程中完全去中心化,无第三方介入,保证了资产在交换过程中的安全性和原子性。那我们来看一下这个工具到底如何使用! 该工具主要的功能是实现不同资产在比原链上交换,首先是在比原链上不同资产进行交换。这个主要使用币币交换合约来进行资产的交换。如果是在比原的主侧链上进行跨链资产交换,则使用的是哈希时间锁合约来完成两条不同链上的资产交换。 下面我们来看一下操作的具体步骤: 第一步: 首先搭建节点环境 1.1 golang的版本高于1.12,同时设置好的$GOPATH环境目录 1.2 启动并配置好bytom节点,参考:bytom...阅读全文

博文 2019-09-26 21:32:56 aside section ._1OhGeD

当查询的数据来自多个数据源,有哪些好的分页策略?

概述 在业务系统开发中,尤其是后台管理系统,列表页展示的数据来自多个数据源,列表页需要支持分页,怎么解决? 问题 如上图,数据源可能来自不同 DB 数据库,可能来自不同 API 接口,也可能来自 DB 和 API 的组合。 我这也没有太好的解决方案,接到这样的需求,肯定首先和需求方沟通,这样分页是否合理。 无非就两种方案: 数据定期同步,首先将查询的数据汇总到一个地方,然后再进行查询分页。 内存中分页,首先将查询的数据存放到内存,然后再进行查询分页。 如果以某一数据源进行分页,其他字段去其他数据源获取,这样还好处理一些。 如果以多个数据源融合后再分页的话,就数据定期同步 或 内存中分页吧。 数据定期同步方案可以根据实际情况去设计同步频率,至于同步到 ES/MySQL/MongoDB 自己决定...阅读全文

博文 2020-03-16 12:32:43 新亮

首发特性:goproxy.cn 现已推出首个 Go 模块代理统计数据 API

前言 这周很值得纪念,首先是 goproxy.cn 已缓存的模块版本总数突破了一百万,这甚至比起 Go 官方的 proxy.golang.org 已缓存的还要多出不少。其次是 goproxy.cn 的日访问量已稳定在千万级,正在朝着亿级进发,目前这在国内我了解到的别的几个同类服务中是最多的了。另外尤为重要的一点是,经过我们的不懈努力,甚至付出了两次事故的代价(详见:status.goproxy.cn),我们终于使得 goproxy.cn 达到了零错误率!现在的 goproxy.cn 可以说是很稳的了,大家可以放心使用。 刚刚在开头稍微为这一个月发生的事情做了个小总结。接下来说一下本次的重点,也就是 goproxy.cn 推出了 Go 模块代理世界中的首个统计数据 API(文档详见:gopro...阅读全文

博文 2020-03-30 23:35:16 煎鱼eddycjy

Golang学习笔记-测试

Go的标准库提供了几个与测试有关的库,其中最主要的是testing包,testing包需要与go test命令以及源代码中所有以_test.go后缀结尾的测试文件一同使用,一般测试文件的名字都会与被测试源码文件的名字相对应,例如main.go的测试文件名为mian_test.go。 功能测试 为了测试源代码,我们需要在测试文件中创建具有以下格式的测试函数,其中Xxx首字符必须是大写的英文字母,在测试函数的内部,我们可以使用Error,Fail等一系列方法表示测试失败。 func TestXxx(t *testing.T){...} testing.T结构有几个非常有用的方法: Log():将给定的文本记录到日志。 Logf():根据给定的格式,将给定的文本记录到日志。 Fail():将测试函...阅读全文

博文 2019-12-29 14:32:39 土豆吞噬者

Golang切片slice存储微探索

问题 不断将获取的信息存储进切片slice中,为了方便更新信息中的某些字段,建立了一个key和切片项地址的map,一边在切片中存储信息,一边建立Key-Value关系,导致通过key取到的值并不正确,也导致需要更新的字段没有更新,代码类似于: var dataSlice []interface{} var keyToData = make(map[string]interface{}) var id = 0 for info := fetchInfo(key) { dataSlice = append(dataSlice, info) // keyToData[key] = &info keyToData[key] = &dataSlice[id] id++ } info := keyToD...阅读全文

博文 2019-05-24 03:34:40 树袋Papa

leetcode_54

Golang: 声明:这题我首先用了JAVA语言去实现,在通过所有测试用例后,发现结果如下: 测试结果 我觉得我实现的超烂,时间复杂度上(我预估)是超烂,空间复杂度上(从程序里就能看出来)也是超烂,结果这个程序的时间复杂度这么好? 思路:因为我今天是第一次做这道题,所以在所有算法里我可能会先写暴力一点的算法,即先做出来,再考虑优化。先上暴力求解的思路,即通过循环来实现,我们可以很明显的看出,螺旋式,其实就像剥洋葱一样,是一层一层地去剥的,我们可以拆解为,先输出最外圈,再输出内圈,当第一层外圈被输出后,第二层内圈即变成原来的外圈,于是就可以一直输出。 具体实现:我们可以考虑三种类型的二维数组,行数远大于列数的,列数远大于行数的,以及行数等于列数的。 那么问题有: 一共要剥几层? 在这里我认为,...阅读全文

博文 2020-01-27 04:32:39 淳属虚构

3.2.8Golang的map

总目录:https://www.jianshu.com/p/e406a9bc93a9 Golang - 子目录:https://www.jianshu.com/p/8b3e5b2b4497 map map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。 map的定义 语法: map[键数据类型]值数据类型 map类型的变量默认初始值为nil,需要使用make()函数来分配内存。 语法: make(map[键数据类型]值数据类型, [容量]) map的基本使用 package main import "fmt" func main() { // 定义一个map 并初始化 长度最好在初始化时就设置好 scoreMap := make(map[str...阅读全文

博文 2020-03-17 23:32:46 寒暄_HX

MSSQL · 最佳实践 · 利用文件组实现冷热数据隔离备份方案

摘要: 摘要 在SQL Server备份专题分享中,前四期我们分享了:三种常见的数据库备份、备份策略的制定、如何查找备份链以及数据库的三种恢复模式与备份之间的关系。本次月报我们分享SQL Server如何利用文件组技术来实现数据库冷热数据隔离备份的方案。 **摘要** 在SQL Server备份专题分享中,前四期我们分享了:三种常见的数据库备份、备份策略的制定、如何查找备份链以及数据库的三种恢复模式与备份之间的关系。本次月报我们分享SQL Server如何利用文件组技术来实现数据库冷热数据隔离备份的方案。 **场景引入** 假设某公司有一个非常重要的超大的数据库(超过10TB),面临如下场景: 该数据库中存储了近10年的用户支付信息(payment),非常重要 ...阅读全文

[Go 教程系列笔记] Channel 通道

Go 教程系列笔记 Interface 第一部分 Go 教程系列笔记 Interface 第二部分 Go 教程系列笔记 并发介绍 Go 教程系列笔记 goroutine(协程) Go 教程系列笔记 Channel 通道 Go 教程系列笔记 缓冲通道和工作池 Go 教程系列笔记 Select Go 教程系列笔记 Mutex(互斥锁) Go 教程系列笔记 结构而不是类-Go中的OOP Go 教程系列笔记 组合而不是继承-Go 中的 OOP Go 教程系列笔记 多态-Go 中的 OOP 在上一个教程中,我们讨论了如何使用 goroutine 在 Go 中实现并发。在本教程中,我们将讨论有关通道以及 goroutine 如何使用通道进行通信。 什么是通道? 通道可以被认为是 goroutine 通信...阅读全文

博文 2019-08-14 16:32:42 xfstart07

Go通道笔记

package main import ( "fmt" "sync" "time" "unsafe" ) func main10() { done := make(chan struct{}) // 结束事件 c := make(chan string) // 数据传输通道 go func() { s := <-c // 接受消息 println(s) close(done) // 关闭通道,作为结束通知 }() c <- "hi!" // 发送消息 <-done // 阻塞,直到有数据或者管道关闭 } func main11() { c := make(chan int, 3) // 创建带 3 个缓冲槽的异步通道 c <- 1 // 缓冲区未满,不会阻塞 c <- 2 println(<...阅读全文

博文 2020-03-08 00:32:39 xiongkun01

老虞学GoLang笔记-常量

开发十年,就只剩下这套Java开发体系了 >>> 常量 常量和C#中的概念相同,在编译期被创建。因为在编译期必须确定其值,因此在声明常量时有一些限制。 其类型必须是:数值、字符串、布尔值 表达式必须是在编译期可计算的 声明常量的同时必须进行初始化,其值不可再次修改 Doc http://golang.org/doc/go_spec.html#Constants http://golang.org/doc/go_spec.html#Constant_expressions http://golang.org/doc/go_spec.html#Constant_declarations http://golang.org//doc/go_spec.html#Iota 语法 const关键字用于声...阅读全文

7. Go 语言数据类型:指针

Hi,大家好。 我是明哥,在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime 0. 什么是指针 当我们定义一个变量 name var name string = "Go编程时光" 此时,name 是变量名,它只是编程语言中方便程序员编写和理解代码的一个标签。 当我们访问这个标签时,机算机会返回给我们它指向的内存地址里存储的值:Go编程时光。 出于某些需要,我...阅读全文

博文 2020-04-29 08:32:44 Python编程时光

Golang学习笔记--Slice

slice切片(Slice)由指针、长度、容量组成,属于引用类型,是一种基于数组的可变长数据类型,与数组array类型关系密切,其中: 1. 指针指向所引用数组的特定元素,该元素为slice的首元素,但不一定是数组的首元素 2.长度(len)为切片的长度 3.容量,从指针指向的数组的位置,到数组最后元素位置的长度 使用append可以向切片添加元素,像slice添加元素,实际上是向slice所引用的数组添加元素,如果对应数组存在空间添加,则直接添加元素,当切片所引用的数组空间已满,无法再添加元素时,则底层,会新建一个匿名数组,并将slice内的元素从旧的数组中copy到新的匿名数组,该匿名数组的大小,为slice的容量*2,slice则指向这个新的匿名数组,同时在数组中添加元素,完成appe...阅读全文

go 的基本数据类型

go 支持的数据类型 bool 类型 数字类型 有符号整型 无符号整型 浮点型 复数类型 //bool 类型//bool 表示布尔值,值为true 或者false func booltest() { x :=true y :=false fmt.Println("x",x,"y",y) } 输出:x true y false 数字类型分为:有符号整型、无符号整型、 有符号整型int 8 表示8位 有符号整型范围 -128~127 int 16 表示16位有符号整型说值范围 -32768~32767 int32 表示32 位有符号整型范围 -2147483648~2147483647 int64 表示64位有符号整型-9223372036854775808~922337203685477580...阅读全文

博文 2020-01-04 15:33:10 水滴石川1

Go 模块--开始使用 Go Modules

Go的1.11和1.12版本包括对模块--新的Go依赖管理系统的初步支持,使依赖版本信息变得明确且更易于管理。这篇博客文章介绍了开始使用模块所需的基本操作。 模块是存储在根目录有一个 go.mod文件的文件树中的 Go 包(package)的集合。go.mod文件定义了模块的module path(也是模块根目录的导入路径)以及模块依赖的其他模块的要求,满足了依赖要求模块才能被成功构建起来。每个依赖模块的要求被写为一个模块路径和相应的模块版本。 下面展示了一个简单的go.mod文件 module example.com/hello go 1.12 require rsc.io/quote v1.5.2 从Go 1.11开始,当当前目录或任何父目录有go.mod时,只要该目录位于$GOPATH...阅读全文

博文 2020-01-05 16:32:38 Kevin

Go语言中基本数据类型初识

在Go语言中常用的基本数据类型有如下几种: 整型 浮点型 布尔类型 复数 字符串 整型 有符号 int8 int16 int32 int64 无符号 uint8 uint16 uint32 uint64 特殊整型 uint,32位操作系统就是uint32,64位操作系统就是uint64 int,32位操作系统就是int32,64位操作系统就是int64 uintptr,无符号整型,用于存放指针 注意:在使用int和 uint类型时,不能假定它是32位或64位的整型,而是考虑int和uint可能在不同平台上的差异。 进制 // 程序入口 func main() { // age = "17" // fmt.Println("Hello World") // fmt.Print("isOK") ...阅读全文

博文 2020-03-16 00:33:14 Uncle_Joker

simpread-golang select-case 实现机制

本文由 简悦 SimpRead 转码, 原文地址 https://hitzhangjie.github.io/jekyll/update/2018/05/19/golang-select-case%E5%AE%9E%E7%8E%B0%E6%9C%BA%E5%88%B6.html 在介绍 select-case 实现机制之前,最好先了解下 chan 操作规则,明白 goroutine 何时阻塞,又在什么时机被唤醒,这对后续理解 select-case 实现有帮助。所以接下来先介绍 chan 操作规则,然后再介绍 select-case 的实现。 1.1 chan 操作规则 1 当一个 goroutine 要从一个 non-nil & non-closed chan 上接收数据时,gorouti...阅读全文

博文 2019-10-08 18:32:57 aside section ._1OhGeD

Go Web 编程--应用ORM

上篇文章中我们在使用的开发环境中增加了MySQL容器,然后介绍了使用database/sql标准库结合数据库驱动包进行数据库操作的方法。不过它们是相对偏底层的软件包。实际开发经常会使用一些在它的基础上封装的 ORM库。ORM的查询使用起来更简单些,语法更富表达力。这篇文章我们主要探究下面这些内容。 gorm的基本用法 如何管理ORM的使用 如何合理规划项目目录结构 安装gorm包 gorm是一个出色的,对开发人员友好的 Golang ORM 库,其支持的特性包括: 全特性 ORM (几乎包含所有特性) 模型关联 (一对一, 一对多,一对多(反向), 多对多, 多态关联) 钩子 (Before/After Create/Save/Update/Delete/Find) 预加载 事务 复合主键 ...阅读全文

博文 2020-02-16 11:34:16 kevinyan

【译】实现Raft协议:Part 3 - 持久性和优化

翻译自Eli Bendersky的系列博客,已获得原作者授权。 本文是系列文章中的第一部分,本系列文章旨在介绍Raft分布式一致性协议及其Go语言实现。文章的完整列表如下: 序言:介绍 第一部分:选主 第二部分:指令和日志复制 第三部分:持久性和优化(本文) 在这一部分,我们会添加持久性和一些优化来完善Raft的基础实现。所有代码已上传到这个目录。 持久性 类似Raft这样的一致性算法的目标,就是通过在独立的服务器之间复制任务来创建一个更具高可用性的系统。在此之前,我们主要关注的是网络分区的故障,也就是集群中一些服务器与其它服务器(或客户端)断开了连接。还有另一种失败模式就是崩溃,也就是一台服务器停止工作并重启。 对于其它服务器,这看起来很像网络分区——服务器暂时断开连接,但是对于崩溃服务器...阅读全文

博文 2020-05-06 16:36:27 GuoYaxiang

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

> NSQ 消息队列实现消息落地使用的是 FIFO 队列。 > 实现为 **diskqueue** , 使用包 `github.com/nsqio/go-diskqueue` ,本文主要对 `diskqueue`的实现做介绍。 ## 功能定位 - 在NSQ 中, diskqueue 是一个实例化的 BackendQueue, 用于**保存在内存中放不下的消息**。使用场景如Topic 队列中的消息,Channel 队列中的消息 - 实现的功能是一个FIFO的队列,实现如下功能: - **支持消息的插入、清空、删除、关闭操作** - **可以返回队列的长度**(写和读偏移的距离) - 具有读写功能,FIFO 的队列 ## diskqueue 的实现 BackendQue...阅读全文

博文 2020-04-09 11:07:18 lpflpf

Mac安装Go环境

一、下载 去Golang官网 )下载需要的版本,这里直接下载苹果版的pkg 二、 安装 直接双击运行pkg,在弹出的安装页面直接安装就行了。 三、测试 输入go version测试go版本。用go env可以查看go环境的变量 默认安装的 GOROOT="/usr/local/go" GOPATH="/Users/admin/go" > go version go version go1.14.3 darwin/amd64 >go env GO111MODULE="" GOARCH="amd64" GOBIN="" GOCACHE="/Users/admin/Library/Caches/go-build" GOENV="/Users/admin/Library/Application Su...阅读全文

博文 2020-05-29 07:32:42 过愙

解析DataWorks数据集成中测试连通性失败问题

摘要: 大家好,这里和大家分享的是DataWorks数据集成中测试连通性失败的排查思路。与测试连通性成功与否的相关因素有很多,本文按照多个因素逐步排查,最终解决问题,希望大家以后再遇到此类问题,请参考此文,相信能够顺利解决您的问题。 一、问题现象 此案例中,DataWorks项目位于华东2,RDS Mysql数据源位于华东1(VPC网络),使用DataWorks进行数据同步之前,首先需要建立数据源,但在建立数据源RDS Mysql的配置页面,“测试连通性”失败,即数据源并没有连通。 1 二、问题处理过程 (1)首先,应该判断该数据源是否支持“测试连通性” 遇到测试连通性问题,首先应该判断该数据源是否支持“测试连通性”,请大家参考《各数据源测试连通性支持情况》。...阅读全文

GO TESTING;HOW,WHAT,WHY

Introduction 关于 Go 测试,我们应该知道测试方式(或者说测试手段)、测试对象及测试原因。 How 测试方式 测试实现 举个例子。针对字符串分割函数(如下),实现单元测试。 package goTest import "strings" // Split slices s into all substrings separated by sep and // returns a slice of the substrings between those separators. func Split(s, sep string) []string { var result []string i := strings.Index(s, sep) for i > -1 { resul...阅读全文

博文 2019-08-07 09:32:39 wangwg

Go Web 编程--应用 ORM

Go Web 编程--应用 ORM 上篇文章中我们在使用的开发环境中增加了MySQL容器,然后介绍了使用database/sql标准库结合数据库驱动包进行数据库操作的方法。不过它们是相对偏底层的软件包。实际开发经常会使用一些在它的基础上封装的 ORM库。ORM的查询使用起来更简单些,语法更富表达力。这篇文章我们主要探究下面这些内容。 gorm的基本用法 如何管理ORM的使用 如何合理规划项目目录结构 安装gorm包 gorm是一个出色的,对开发人员友好的 Golang ORM 库,其支持的特性包括: 全特性 ORM (几乎包含所有特性) 模型关联 (一对一, 一对多,一对多(反向), 多对多, 多态关联) 钩子 (Before/After Create/Save/Update/Delete/...阅读全文

博文 2020-03-04 11:32:50 KevinYan_a990

Go语言(十六) 日志项目升级

日志项目升级 跟新前的日志项目:https://blog.51cto.com/13812615/2489258 升级功能点 异步刷盘 日志切分 项目结构 ```xlog/├── console.go #console日志输出├── file.go #文件输出(本次优化点)├── level.go #日志级别类├── log.go #日志库├── log_base.go # 基类库└── tool.go #工具库,用于获取文件名,函数名,所在行 ## 代码拆解 - log.go package xlog //定义全局默认的日志类型var logger XLog = newXLog(XLogTypeFile,XLogLevelDebug,"","default") type XLog inter...阅读全文

博文 2020-04-27 11:33:33 wx5b285b48ed74e

(二) Golang变量(2) - 数据类型的基本介绍

3.程序中"+"的应用 当左右两边都是数值型时,则做加法运算 当左右两边都是字符串,则做字符串拼接 i1, i2 := 2, 4 i3 := i1 + i2 fmt.Println("加法相加", i3) str1, str2 := "wang", "peng" str3 := str1 + str2 fmt.Println("字符拼接", str3) 结果 加法相加 6 字符拼接 wangpeng 4.数据类型的基本介绍 数据类型的基本介...阅读全文

博文 2020-05-19 15:32:49 21号新秀_邓肯

使用shuttle实现bytom上跨链资产交换

最近基于比原链上的不同资产交换工具shuttle非常抢眼,因为该工具不仅可以实现同一条链上的不同资产进行交换,还可以实现不同区块链平台上的多种资产进行交换。该工具奠定了资产在交易的过程中完全去中心化,无第三方介入,保证了资产在交换过程中的安全性和原子性。那我们来看一下这个工具到底如何使用! 该工具主要的功能是实现不同资产在比原链上交换,首先是在比原链上不同资产进行交换。这个主要使用币币交换合约来进行资产的交换。如果是在比原的主侧链上进行跨链资产交换,则使用的是哈希时间锁合约来完成两条不同链上的资产交换。 下面我们来看一下操作的具体步骤: 第一步: 首先搭建节点环境 1.1 golang的版本高于1.12,同时设置好的$GOPATH环境目录 1.2 启动并配置好bytom节点,参考:bytom...阅读全文

博文 2019-09-26 14:32:48 比原链Bytom

19.单元测试

不写测试的开发不是好程序员。我个人非常崇尚TDD(Test Driven Development)的,然而可惜的是国内的程序员都不太关注测试这一部分。 这篇文章主要介绍下在Go语言中如何做单元测试和基准测试。 go test工具 Go语言中的测试依赖go test命令。编写测试代码和编写普通的Go代码过程是类似的,并不需要学习新的语法、规则或工具。 go test命令是一个按照一定约定和组织的测试代码的驱动程序。在包目录内,所有以_test.go为后缀名的源代码文件都是go test测试的一部分,不会被go build编译到最终的可执行文件中。 在*_test.go文件中有三种类型的函数,单元测试函数、基准测试函数和示例函数。 类型 格式 作用 测试函数 函数名前缀为Test 测试程序的一些...阅读全文

博文 2020-04-30 21:32:55 雪上霜

Go 译文之词法分析与解析 Part Three

作者:Adam Presley | 地址:adampresley.github.io/2015/06/01/… 译者前言 最近发现我的翻译是越来越随性了,刚开始文章翻译的时候比较拘束,现在更多强调可读性,比如有些对文章大意没有什么影响的文字我现在都会选择直接跳过。 这篇文章主要是关于 INI 解释器的 parser 实现,它会从上一节中 Lexer 中接收 Token 解析,最终返回给使用者具有实际意义的结构体。读了这个系列的文章,我相信大家对词法器实现的原理将会有了基本的理解,但如果要真正实践,似乎还有一段距离。有兴趣的话,我们可以实现个自己的 JSON 解释器。要求可以稍微简化,只解析到 JSON 的第一层。 译文如下: 本系列第一篇文章,英文原版,我们介绍了词法分析解析的一些基础概念,...阅读全文

博文 2019-08-01 01:04:15 波罗学

GO常量与变量

package main import ( "fmt" ) //单个变量(自行判断变量类型) var test1 = "content1" /*单个变量 先声明类型再赋值,此种方式函数中调用不了(会报错syntax error: non-declaration statement outside function body) 请再函数外设置 */ //var test2 string //test2 = "content2" //test3 : = "content3" //:=左侧的变量不应该是已经被声明过的,否则会导致编译错误 //单个变量 var test4 string = "content4" /*多个变量 此种方式函数中调用不了,请再函数外设置 */ //var test5, t...阅读全文

博文 2020-04-16 15:37:42 赛里

好程序员大数据培训之掌握Hive的静态分区与动态分区

分区是hive存放数据的一种方式。将列值作为目录来存放数据,就是一个分区。这样查询时使用分区列进行过滤,只需根据列值直接扫描对应目录下的数据,不扫描其他不关心的分区,快速定位,提高查询效率。分动态和静态分区两种: 1.静态分区:若分区的值是确定的,那么称为静态分区。新增分区或者是加载分区数据时,已经指定分区名。 createtableifnotexistsday_part1( uidint, unamestring ) partitionedby(yearint,monthint) rowformatdelimitedfieldsterminatedby'' ; ##加载数据指定分区 loaddatalocalinpath'/root/Desktop/student.txt'intotabl...阅读全文

Go 译文之词法分析与解析 Part Three

作者:Adam Presley | 地址:https://adampresley.github.io... 译者前言 最近发现我的翻译是越来越随性了,刚开始文章翻译的时候比较拘束,现在更多强调可读性,比如有些对文章大意没有什么影响的文字我现在都会选择直接跳过。 这篇文章主要是关于 INI 解释器的 parser 实现,它会从上一节中 Lexer 中接收 Token 解析,最终返回给使用者具有实际意义的结构体。读了这个系列的文章,我相信大家对词法器实现的原理将会有了基本的理解,但如果要真正实践,似乎还有一段距离。有兴趣的话,我们可以实现个自己的 JSON 解释器。要求可以稍微简化,只解析到 JSON 的第一层。 译文如下: 本系列第一篇文章,英文原版,我们介绍了词法分析解析的一些基础概念,了解...阅读全文

博文 2019-08-01 12:32:37 波罗学

Go开发中的十大常见陷阱[译]

文: The Top 10 Most Common Mistakes I’ve Seen in Go Projects 作者: Teiva Harsanyi 译者: Simon Ma 我在Go开发中遇到的十大常见错误。顺序无关紧要。 未知的枚举值 让我们看一个简单的例子: type Status uint32 const ( StatusOpen Status = iota StatusClosed StatusUnknown ) 在这里,我们使用iota创建了一个枚举,其结果如下: StatusOpen = 0 StatusClosed = 1 StatusUnknown = 2 现在,让我们假设这个Status类型是JSON请求的一部分,将被marshalled/unmarshalled...阅读全文

博文 2019-08-17 17:02:38 SimonMa

【Go每日问答】数据类型及用法

在 Go 编程语言中,数据类型用于声明函数和变量。 数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。 Go 语言按类别有以下几种数据类型: 序号 类型和描述 1 布尔型 布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。 2 数字类型 整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且支持复数,其中位的运算采用补码。 3 字符串类型: 字符串就是一串固定长度的字符连接起来的字符序列。Go 的字符串是由单个字节连接起来的。Go 语言的字符串的字节使用 UTF-8 编码标识 Unicode 文本。 4 派生类型: 包括: (a) ...阅读全文

博文 2020-03-20 10:32:51 古月

Go学习之Channel总结

Channel是Go中的一个核心类型,你可以把它看成一个管道,通过它并发核心单元就可以发送或者接收数据进行通讯(communication)。 类型 T表示任意的一种类型 双向: chan T 单向仅发送: chan <- 单向仅接受: <- chan 单向的channel,不仅可以通过声明make(chan <- interface{}) 来创建,还可以通过隐身或显示的通过 chan 来转换,如下 func main() { channel := make(chan int, 10) convert(channel) } func convert(channel chan<- int) {} 在 convert函数中,就可以吧channel当成单向输入管道来使用了 既然 双向 chan,既...阅读全文

博文 2019-08-15 21:02:37 tyloafer

leetcode_56

Golang: 思路:试想,如果给我们的是按照intervals[i][0]大小顺序排列好的数组,那么我们在做数组合并的时候是否会简单一些呢?答案是肯定的,而且需要注意的是,题意中给的测试用例是按照我上文提及的顺序排列好的,但题目里并没有给出数组是排列好的这一句话。所以,要首先对数组做按照intervals[i][0]大小顺序排列的操作。然后,是如何对数组进行合并及存储呢?不难看出,我们只需要对intervals[i][1]和intervals[i+1][0]进行比较,至于怎么个比较法,各位可以找张纸画一画即可,另外,代码里也有,这里就不给出详细说明了。 附上程序效果截图 效率一览 type ints [][]int func (s ints) Len() int { return len(...阅读全文

博文 2020-01-27 22:32:44 淳属虚构

Go字符串

字符串: string是数据类型,不是引用或指针类型 string是只读的byte slice,len函数可以获取它所包含的byte数 string的byte数组可以存放任何数据 func TestStringInit(t *testing.T) { var s string t.Log(s) // 初始化为默认零值"" 空字符串 s = "hello" t.Log(len(s)) // 5 5个byte //s[1] = 3 // string是不可变的byte slice 不可以赋值 s = "\xE4\xB8\xA5" // 可以存储任何二进制数据 t.Log(s) // 严 t.Log(len(s)) // 3 为3个byte } Unicode UTF8: Unicode是一种字符...阅读全文

博文 2020-05-15 02:32:45 Tinkled

ARTS 第3周| LeetCode 140 Word Break| Go GC 历史| return defer 哪个先执行

ARTS ARTS 是陈浩(网名左耳朵耗子)在极客时间专栏里发起的一个活动,目的是通过分享的方式来坚持学习。 每人每周写一个 ARTS:Algorithm 是一道算法题,Review 是读一篇英文文章,Technique/Tips 是分享一个小技术,Share 是分享一个观点。 本周内容 这一周的 ARTS 你将看到: Work Break II 这道题的评论区竟然有一半人都在吐槽测试例太恶心? 一篇文章了解 Golang GC 的“昨天、今天和明天”。 一个老 Gopher 常谈的问题,到底 return 和 defer 哪个先执行? 不要一开始就经陷入细节的地狱。 Algorithm 本周的算法题是 LeetCode 的 139.Work Break 和 140.Work Break I...阅读全文

博文 2020-06-01 10:32:45 casmo澎湃哥

每天一点Go语言——Go语言语法基础及基本数据类型

每天一点Go语言——Go语言语法基础及基本数据类型 一、Go语言基础语法 ​ 上篇Go语言讲解中谈到了有关Go语言的基本组成结构,该小节就来讲述有关go语言的基础语法。Go语言程序由多个标记组成,如:关键字、标识符、常量、符号、字符串。 ​ 行分割符——一行表示一个语句结束,无需写“;”。当然,你可以将多条语句写在一行,并且使用“;”号区分,但是不推荐这样写开发代码。 ​ 注释在本文就不多说了。 标识符 ​ 如果说变量是shell入门的第一道关卡,那么可以说,标识符就是开发语言的第一道门槛。 ​ 标识符,从官方角度解释:用于命名变量、类型等程序实体。一个标识符具备的特点:实际上就是一个或是多个字母(A~Z和a~z)数字(0~9)、下划线_组成的序列,但是第一个字符必须是字母huo下划线而不能...阅读全文

博文 2020-04-03 14:33:23 wx5d8a17c45cb5b

Golang 基础数据类型(一)

基础数据类型 在Go语言中,数据类型用于声明函数与变量、常量数据的类型,声明何种数据类型主要是为了提高内存的利用率,因为不同的数据类型在内存所需要的空间大小是不一样的。 Golang内置基础数据类型如下表所示: 数据类型名称 类型和描述 boolean 布尔型,值可以是常量true或false int&uint 带符号和无符号两种整型。int8,int16,int32(rune),int64和uint8(byte),uint16,uint32,uint64。uintptr类型在指针小节中单独介绍。 float32&float64 Golang没有float这种类型,只有float32和float64两种类型 complex64&complex128 复数类型,complex64包含float...阅读全文

25. 学习 Go 协程:详解信道/通道

Hi,大家好,我是明哥。 在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:golang.iswbm.com 我的 Github:github.com/iswbm/GolangCodingTime Go 语言之所以开始流行起来,很大一部分原因是因为它自带的并发机制。 如果说 goroutine 是 Go语言程序的并发体的话,那么 channel(信道) 就是 它们之间的通信机制。channel,是一个可以让一个 goroutine 与另一个 goroutine 传输信息的通道,我把他叫做...阅读全文

博文 2020-06-02 11:35:02 王一白

learn go with tests 学习笔记(二) 数组与切片

知识点 先写测试! Go 有内置的计算测试 覆盖率的工具,它能帮助你发现没有被测试过的区域。我们不需要追求 100% 的测试覆盖率,它只是一个供你获取测试覆盖率的方式。只要你严格遵循 TDD 规范,那你的测试覆盖率就会很接近 100%。 运行: `go test -cover` 你会看到: PASS coverage: 100.0% of statements 数组 数组初始化: 数组的容量是我们在声明它时指定的固定值。我们可以通过两种方式初始化数组: [N]type{value1, value2, ..., valueN} e.g. numbers := [5]int{1, 2, 3, 4, 5} [...]type{value1, value2, ..., valueN} e.g. nu...阅读全文

博文 2020-05-28 21:32:46 硌手小石头