go语言

go语言 base64编码解码

纵然是瞬间 提交于 2020-01-29 23:19:18
package main import ( "encoding/base64" "fmt" ) func main() { str := "Man" fmt.Println("原字符串是:", str) enStr := Base64EncodeString(str) fmt.Println("编码后字符串是:", enStr) deStrBytes, deStr := Base64DecodeString(enStr) fmt.Printf("解码后字符串:字符串%s 字节%v\n", deStrBytes, deStr) } // Base64EncodeString 编码 func Base64EncodeString(str string) string { return base64.StdEncoding.EncodeToString([]byte(str)) } // Base64DecodeString 解码 func Base64DecodeString(str string) (string, []byte) { resBytes, _ := base64.StdEncoding.DecodeString(str) return string(resBytes), resBytes } 来源: https://www.cnblogs.com/Mishell/p

go语言 椭圆数字签名及其验证算法

淺唱寂寞╮ 提交于 2020-01-29 12:18:25
package main import ( "crypto/ecdsa" "crypto/elliptic" "crypto/rand" "crypto/sha256" "encoding/hex" "fmt" "log" "math/big" ) func main() { // 1、对需要签名的文件进行hash运算 data := "from xiaoxiao to maomao 100 btc" hashInstance := sha256.New() hashInstance.Write([]byte(data)) hashed := hashInstance.Sum(nil) // 2、生成私钥和公钥字节 privateKey, publicKeyBytes := NewKeyPair() // 3、生成签名的der编码格式 derSignString := ECDSASign(hashed, privateKey) fmt.Printf("签名信息为:%s\n", derSignString) // 4、验证签名 flag := ECDSAVerify(publicKeyBytes, hashed, derSignString) fmt.Println("签名验证结果:", flag) } // NewKeyPair 生成私钥和公钥,生成的私钥为结构体ecdsa

GO语言-包

ε祈祈猫儿з 提交于 2020-01-29 09:38:45
一、Go语言的包(package) 1.1 包介绍 包(package) 是多个Go源码的集合,是一种高级的代码复用方案,Go语言为我们提供了很多内置包,如 fmt 、 os 、 io 等。 1.2 定义包 我们还可以根据自己的需要创建自己的包。一个包可以简单理解为一个存放 .go 文件的文件夹。 该文件夹下面的所有go文件都要在代码的第一行添加如下代码,声明该文件归属的包。 package 包名 注意事项: 一个文件夹下面直接包含的文件只能归属一个 package ,同样一个 package 的文件不能在多个文件夹下。 包名可以不和文件夹的名字一样,包名不能包含 - 符号。 包名为 main 的包为应用程序的入口包,这种包编译后会得到一个可执行文件,而编译不包含 main 包的源代码则不会得到可执行文件。 1.3 可见性 如果想在一个包中引用另外一个包里的标识符(如变量、常量、类型、函数等)时,该标识符必须是对外可见的(public)。在Go语言中只需要将标识符的首字母大写就可以让标识符对外可见了。 举个例子, 我们定义一个包名为 pkg2 的包,代码如下: package pkg2 import "fmt" // 包变量可见性 var a = 100 // 首字母小写,外部包不可见,只能在当前包内使用 // 首字母大写外部包可见,可在其他包中使用 const Mode = 1

Go语言极速入门手册.go

久未见 提交于 2020-01-29 05:30:24
转自:http://blog.coderzh.com/2015/09/28/go-tips/ /* gotips_test.go: Golang速学速查速用代码手册 Source: github.com/coderzh/CodeTips/blob/master/gotips_test.go Author: coderzh(github.com/coderzh) Blog: http://blog.coderzh.com 参考:《Go语言编程》 */ package main import ( "errors" "fmt" "github.com/stretchr/testify/assert" "io" "io/ioutil" "log" "math" "os" "path/filepath" "regexp" "strings" "sync" "testing" "time" ) // 0. 注释 /* 规范: 1. 命名:骆驼命名法(不要用下划线) 命令: go get github.com/coderzh/xxx go build calc go run xxx.go go install calc */ // 1. Hello World func helloWorld() { fmt.Println("Hello, 世界") } // 2.变量类型 func

GO语言实战八 并发相关概念

五迷三道 提交于 2020-01-29 04:03:23
go并发简介 Go 语言里的并发指的是能让某个函数独立于其他函数运行的能力。当一个函数创建为 goroutine 时,Go 会将其视为一个独立的工作单元。这个单元会被调度到可用的逻辑处理器上执行。Go 语言 运行时的调度器是一个复杂的软件,能管理被创建的所有 goroutine 并为其分配执行时间。这个调度 器在操作系统之上,将操作系统的线程与语言运行时的逻辑处理器绑定,并在逻辑处理器上运行 goroutine。调度器在任何给定的时间,都会全面控制哪个 goroutine 要在哪个逻辑处理器上运行。 Go 语言的并发同步模型来自一个叫作 通信顺序进程 (Communicating Sequential Processes,CSP) 的范型(paradigm)。CSP 是一种消息传递模型,通过在 goroutine 之间传递数据来传递消息,而不是 对数据进行加锁来实现同步访问。用于在 goroutine 之间同步和传递数据的关键数据类型叫作通道(channel)。 一些概念 进程 狭义的定义:进程就是一段程序的执行过程。 广义定义:进程是一个具有一定独立功能的程序关于某次数据集合的一次运行活动,它是操作系统分配资源的基本单元。 简单来讲进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data

GO语言-接口

不问归期 提交于 2020-01-28 20:00:13
一、接口 1.1 接口类型 在Go语言中接口(interface)是一种类型,一种抽象的类型。 interface 是一组 method 的集合,是 duck-type programming 的一种体现。接口做的事情就像是定义一个协议(规则),只要一台机器有洗衣服和甩干的功能,我就称它为洗衣机。不关心属性(数据),只关心行为(方法)。 为了保护你的Go语言职业生涯,请牢记接口(interface)是一种类型。 1.2 为什么要使用接口 type Cat struct{} func (c Cat) Say() string { return "喵喵喵" } type Dog struct{} func (d Dog) Say() string { return "汪汪汪" } func main() { c := Cat{} fmt.Println("猫:", c.Say()) d := Dog{} fmt.Println("狗:", d.Say()) } 上面的代码中定义了猫和狗,然后它们都会叫,你会发现main函数中明显有重复的代码,如果我们后续再加上猪、青蛙等动物的话,我们的代码还会一直重复下去。那我们能不能把它们当成“能叫的动物”来处理呢? 1.3 接口的定义 Go语言提倡面向接口编程。 每个接口由数个方法组成,接口的定义格式如下: type 接口类型名 interface

GO语言学习(一)

吃可爱长大的小学妹 提交于 2020-01-28 03:51:00
我是一名PHPer,本门武功江湖上人称:葵花宝典,因为它:“欲练此功,必先自宫!”,至于为啥,自己了解去看。本人和韦小宝差不多,并没有真正自宫 (><) 。近10年来的江湖上一新门派逐渐庞大,本人就完璧之身去探个门道。 一、师出何门?(什么是Go语言): Go语言是谷歌2009年发布的第二款开源编程语言,它专门针对多处理器系统应用程序的编程进行了优化,它是一种系统语言其非常有用和强大,其程序可以媲美C或C++代码的速度,而且更加安全、支持并行进程。 Go支持面向对象,而且具有真正的闭包(closures)和反射 (reflection)等功能。 Go可以在不损失应用程序性能的情况下降低代码的复杂性。 二、门派信仰!(Go语言的目标): Go的目标是希望提升现有编程语言对程序库等依赖性(dependency)的管理,这些软件元素会被应用程序反复调用。由于存在并行编程模式,因此这一语言也被设计用来解决多处理器的任务。 三、武功特点!(Go语言的特点): Go语言设计是让软件充分发挥多核心处理器同步多工的优点,它可解决面向对象程序设计面临的麻烦。 Go的速度也非常快,几乎和C或C++程序一样快,且能够快速制作程序。 Go支持面向对象,而且具有真正的闭包(closures)和反射 (reflection)等功能。 Go语言可以在不损失应用程序性能的情况下降低代码的复杂性。

Go语言实战流媒体视频网站

泪湿孤枕 提交于 2020-01-27 22:10:02
第1章 课程介绍 介绍这门课程大纲,技术堆栈以及环境 1-1 prestudy 1-2 课程介绍及知识要点预习 第2章 一个例子了解golang工具链 通过一个简单的webservice具体从golang的工具链,到test,全面介绍golang在工程项目里需要掌握的知识点。 2-1 一个例子了解golang常用工具链 2-2 golang项目中test的写法 2-3 golang项目中benchmark的写法 2-4 章节总结 第3章 流媒体网站架构以及API模块的实现 本章通过实战演练,从网站的整体架构设计,到服务划分,数据库设计,到api模块的实现,全面讲述golang对webservice的实现以及代码分层架构的思想,同时辅以test cases的全程编写与指导,全面了解工程化golang项目的实现。 3-1 流媒体网站整体介绍与架构梳理 3-2 api设计与架构 3-3 api实现之详细设计(上) 3-4 api实现之详细设计(中) 3-5 api实现之详细设计(下) 3-6 api之http handler层 3-7 api之数据库层设计 3-8 api之数据库层实现_数据库连接 3-9 api之数据库层实现_实现User 3-10 api之数据库层实现_编写User Test Case 3-11 api之数据库层实现_User部分代码优化 3-12

GitHub上优秀的Go开源项目

折月煮酒 提交于 2020-01-27 19:22:44
2014年11月,Golang官方博客发布Go语言核心开发组成员Andrew Gerrand文章 《 Half a decade with Go 》,以纪念Go语言发布5周年。Andrew Gerrand在文章中称,Go语言在工业界向云计算转型时代找到了自己的位置,目前一些重量级的云计算项目比如有名的Docker等都是用Go语言开发的,并预言“2015年将是Go语言急剧发展之年”(“ 2015 will be Go's biggest year yet.”)。 Go语言:制霸云计算时代 引用 从国内Go语言发展和应用来看,七牛算是国内第一家选Go语言做服务端的公司。在前段时间,《技术人攻略》对七牛CEO许式伟所做的一篇深度采访( 采访原文 )中,许式伟对“为何早在2011年Go语法还没完全稳定下来的情况下选择Go作为存储服务端的主体语言”给出自己的解释。许式伟谈到说: 编程哲学的重塑是Go语言独树一帜的根本原因,其它语言仍难以摆脱OOP或函数式编程的烙印,只有Go完全放弃了这些,对编程范式重新思考,对热门的面向对象编程提供极度简约但却完备的支持。Go是互联网时代的C语言,不仅会制霸云计算,10年内将会制霸整个IT领域。 前不久,Facebook也开源了很多Go语言库,可前往 GitHub托管地址 查看。 Go语言目前从虚拟化到Git代码托管服务等方面,都有重量级项目现身

Go语言学习资料

北慕城南 提交于 2020-01-27 18:44:02
Go语言学习资料 链接:https://pan.baidu.com/s/1ukfAyACsqRjW8t_3gZejKA 提取码:r3nu 来源: CSDN 作者: weixin_43925869 链接: https://blog.csdn.net/weixin_43925869/article/details/104094196