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

从零学习 Go 语言(03):数据类型之整型与浮点型

Hi,大家好呀,我是一个刚学习 Go 语言不久的新手,在入门 Golang 的这段时间里,我写了很多详细的学习笔记,很适合新手学习噢。这些文章已经发布在我的个人微信公众号里:《Go编程时光》里,今天开始将文章内容搬运到这里,希望有更多的人看到,给更的人带来帮助,但是这里文章会相对滞后,想获取最新文章,可以前往关注《Go编程时光》,请放心关注,这是一个纯分享的号,完全没有广告。 **系列导读 ** [从零学习 Go 语言(01):一文搞定开发环境的搭建](https://studygolang.com/articles/27365) [从零学习 Go 语言(02):学习五种变量创建的方法](https://studygolang.com/articles/27432) --- ## 1. 整型...阅读全文

博文 2020-03-24 19:39:27 hello_wbm

前期

比如新浪微博发微博的输入框有一个已输入字数的统计,它的规则推测是:汉字和中文标点算 1 个字数,英文和其他符号算 0.5 个字数。不足 1 个字算 1 个。大家可以去微博体验一下计算方式。golang 可以使用正则和 unicode 包的方法判断。以下函数 GetStrLength 返回输入的字符串的字数,每个汉字和中文标点算 1 个字数,英文和其他字符算半个字数,不足 1 个字算 1 个。// GetStrLength 返回输入的字符串的字数,汉字和中文标点算 1 个字数,英文和其他字符 2 个算 1 个字数,不足 1 个算 1个func GetStrLength(str string) float64 {var total float64reg := regexp.MustCompile...阅读全文

博文 2019-01-24 23:34:43 青云老师

fmt.Printf中的格式化动作('verb')

# 源自C语言但更简单 ## 通用: ``` %v 值的默认格式表示 %+v 类似%v,但输出结构体时会添加字段名 %#v 值的Go语法表示 %T 值的类型的Go语法表示 %% 百分号 ``` ## 布尔值: ``` %t 单词true或false ``` ## 整数: ``` %b 表示为二进制 %c 该值对应的unicode码值 %d 表示为十进制 %o 表示为八进制 %q 该值对应的单引号括起来的go语法字符字面值,必要时会采用安全的转义表示 %x 表示为十六进制,使用a-f %X 表示为十六进制,使用A-F %U 表示为Unicode格式:U+1234,等价于"U+%04X" ``` ## 浮点数与复数的两个组分: ``` %b 无小数部分、二进制指数的科学计数法,如-123456p...阅读全文

博文 2018-10-03 16:53:53 ace_kylin

golang中的bytes包

golang标准库中提供了bytes包,该包几乎和strings包给string提供的功能,只不过bytes包对应的是[]byte。和strings一样,并不修改传入变量,而是返回其副本修改之后的内容。 整个包分为以下几种操作:转换、比较、去除、分割、查找、替换 一、转换 将s的副本中所有字符修改成大写(小写),然后返回 func ToUpper(s []byte) []byte // 全部转大写 func ToLower(s []byte) []byte // 全部转小写 func ToTitle(s []byte) []byte // 全部转大写 使用指定的映射表将对s的副本中的所有字符进行修改,然后返回 func ToUpperSpecial(_case unicode.Special...阅读全文

博文 2018-12-02 21:34:53 laijh

go语言对称加密算法

package main import ( "bytes" "crypto/aes" "crypto/cipher" "crypto/des" ) // des的CBC加密 // 编写填充函数, 如果最后一个分组字节数不够, 填充 // ......字节数刚好合适, 添加一个新的分组 // 填充个的字节的值 == 缺少的字节的数 func paddingLastGroup(plainText []byte, bloclSize int) []byte { // 1. 求出最后一个组中剩余的字节数 28 % 8 = 3...4 32 % 8 = 4 ...0 padNum := bloclSize - len(plainText) % bloclSize // 2. 创建新的切片, 长度 ==...阅读全文

博文 2019-10-16 10:02:43 吾爱美人

Prometheus远程存储

除了其本地时间序列数据库之外,还可以将Prometheus配置为读取和写入远程存储。这旨在支持监视数据的长期存储。 远程读 配置后,Prometheus存储查询(例如,通过HTTP API)将发送到本地和远程存储,然后合并结果。 请注意,为了在面对远程存储问题时保持可靠性,警报和记录规则评估仅使用本​​地TSDB。 配置 您可以在Prometheus配置文件的remote_read部分中配置远程存储读取路径。 最简单的是,您只需为远程存储指定读取的端点URL,再加上身份验证方法。您可以使用HTTP基本认证或承载令牌认证。 您可能需要使用read_recent标志:设置为true时,将从远程存储和本地存储中回答所有查询。如果为false(默认值),则可以从本地存储完全回答的所有查询都不会发送到...阅读全文

博文 2019-12-19 17:32:42 iyacontrol

MAY-Lesson 1

笔记 - unsafe Package unsafe contains operations that step around the type safety of Go programs. Packages that import unsafe may be non-portable and are not protected by the Go 1 compatibility guidelines. unsafe 库让 golang 可以像C语言一样操作计算机内存,但这并不是golang推荐使用的,能不用尽量不用,就像它的名字所表达的一样,它绕过了golang的内存安全原则,是不安全的,容易使你的程序出现莫名其妙的问题,不利于程序的扩展与维护。 unsafe.Sizeof Sizeof ...阅读全文

博文 2019-05-22 17:34:53 夜空一起砍猩猩

golang中unsafe包教程

unsafe内容介绍 type ArbitraryType int type Pointer *ArbitraryType func Sizeof(x ArbitraryType) uintptr func Offsetof(x ArbitraryType) uintptr func Alignof(x ArbitraryType) uintptr unsafe包只有两个类型,三个函数,但是功能很强大。 unsafe 库让 golang 可以像C语言一样操作计算机内存,但这并不是golang推荐使用的,能不用尽量不用,就像它的名字所表达的一样,它绕过了golang的内存安全原则,是不安全的,容易使你的程序出现莫名其妙的问题,不利于程序的扩展与维护。 先简单介绍下Golang指针 *类型:普通...阅读全文

博文 2018-08-06 16:34:48 豆瓣奶茶

Go语言之父带你重新认识字符串、字节、rune和字符

以下文章翻译自罗伯·派克发表在Go Blog的文章,文章中为读者详述了Go语言中字符串与我们经常提起的字节、字符还有rune的关系和相互之间的不同。正如派克在文中所说 字符串这个话题对于一篇博客文章来说似乎太简单了,但是要很好地使用它们,不仅需要了解它们的工作原理,还需要了解字节,字符和 rune 的区别,以及 Unicode 和 UTF- 8,字符串和字符串直接量之间的区别,以及其他甚至更细微的区别。原文地址:https://blog.golang.org/strings 文章篇幅还是挺长的,大家时间都很宝贵所以我先把文章探究的问题的结论放在前面,有时间的同学还是建议整篇读一下。 Go 源代码始终为 UTF-8。 字符串可以包含任意字节。 字符串文字中不包含字节级转义符时字符串始终包含有效...阅读全文

博文 2020-02-11 19:32:39 Kevin

如何用Redis实现一个指定时间的限速器

使用Redis的Incr可以很容易的实现一个限速器 在redis的官方文档中也有详细的示例 FUNCTION LIMIT_API_CALL(ip) ts = CURRENT_UNIX_TIME() keyname = ip+":"+ts current = GET(keyname) IF current != NULL AND current > 10 THEN ERROR "too many requests per second" END IF current == NULL THEN MULTI INCR(keyname, 1) EXPIRE(keyname, 1) EXEC ELSE INCR(keyname, 1) END PERFORM_API_CALL() 举个例子: 现有一个...阅读全文

博文 2019-01-25 19:34:43 dom_chan

go浮点数转字符串保留小数点后N位解决办法

最近在项目中碰到很多次float转string,同时要求保留小数点后几位,并且去掉小数点后0的场景 虽然问题很简单,但是隔了挺久没处理这种场景就有些生疏了,自己也搜了一下,很多回答都不太满意。这里贴一下自己的做法,如果有更好的解决办法的话,还请多多指教 // 主要逻辑就是先乘,trunc之后再除回去,就达到了保留N位小数的效果 func FormatFloat(num float64, decimal int) string { // 默认乘1 d := float64(1) if decimal > 0 { // 10的N次方 d = math.Pow10(decimal) } // math.trunc作用就是返回浮点数的整数部分 // 再除回去,小数点后无效的0也就不存在了 retur...阅读全文

Golang字节对齐

最近在做一些性能优化的工作,其中有个结构体占用的空间比较大,而且在内存中的数量又特别多,就在想有没有优化的空间,想起了 c 语言里面的字节对齐,通过简单地调整一下字段的顺序,就能省出不少内存,这个思路在 golang 里面同样适用 基本数据大小 在这之前先来看下 golang 里面基本的类型所占数据的大小 So(unsafe.Sizeof(true), ShouldEqual, 1) So(unsafe.Sizeof(int8(0)), ShouldEqual, 1) So(unsafe.Sizeof(int16(0)), ShouldEqual, 2) So(unsafe.Sizeof(int32(0)), ShouldEqual, 4) So(unsafe.Sizeof(int64(0)...阅读全文

博文 2018-11-27 18:34:42 Chole121

golang标准库之strconv

字符串转整型 package main import ( "fmt" "strconv" ) func main() { //字符串转为整数 s := "128" // func ParseInt(s string, base int, bitSize int) (i int64, err error) // 返回字符串表示的整数值,接受正负号。 // base指定进制(2到36),如果base为0,则会从字符串前置判断,"0x"是16进制,"0"是8进制,否则是10进制; // bitSize指定结果必须能无溢出赋值的整数类型,0、8、16、32、64 分别代表 int、int8、int16、int32、int64; // 返回的err是*NumErr类型的,如果语法有误,err.Erro...阅读全文

博文 2019-10-04 15:32:45 aside section ._1OhGeD

golang[38]-区块链- 生成比特币地址

生成比特币地址123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293package mainimport ( "crypto/sha256" "golang.org/x/crypto/ripemd160" "fmt" "math/big" "encoding/hex")//base58编码var b58Alphabet = []byte("123456789ABCDEFGHJKLMNPQRSTUV...阅读全文

博文 2018-12-13 00:35:46 jonson_jackson

golang中encoding/base32包

1、golang中base32包是什么? 2、base32给我们开发者提供了什么?以及用法? 3、编码与解码各有哪几种操作? 一、golang中base32包是什么? 这个包实现了 RFC 4648 定义的 base32 编码。 二、base32给我们开发者提供了什么? 变量: RFC 4648 定义的标准 base32 编码。 var StdEncoding = NewEncoding(encodeStd) RFC 4648 里定义的"Extended Hex Alphabet",一般用于DNS var HexEncoding = NewEncoding(encodeHex) 函数: 1)func NewDecoder(enc *Encoding, r io.Reader) io.Read...阅读全文

博文 2018-12-11 17:34:49 laijh

兄弟连区块链培训分享Go语言获取packed struct的大小

“区块链是一门集合密码学、共识算法、智能合约、超级账本等多门技术的复杂性综合学科。”尹正表示,区块链培训机构的师资质量及其对区块链行业的认知水平参差不齐,普通消费者也无从考究。 Go语言主要用作服务器端开发,其定位是用来开发“大型软件”的,适合于很多程序员一起开发大型软件,并且开发周期长,支持云计算的网络服务。Go语言能够让程序员快速开发,并且在软件不断的增长过程中,它能让程序员更容易地进行维护和修改。它融合了传统编译型语言的高效性和脚本语言的易用性和富于表达性。网络协议里面,很可能遇到自定义的封包,对应到c里面的是typedef struct _PackageHeader{ int headerLen; int timeStamp; short cmd };为了保证单字节对齐,可以加上编译...阅读全文

博文 2018-08-21 16:35:19 兄弟连区块链培训

AC GO GO GO!!!

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/code12hour/article/details/46809457 新学期开始了,要继续哦 小紫书上的一道很烦的题:Uva 11809 Flloating-Point Numbers 要做的: CDOJ 1139 菲波拉契数制升级版 CDOJ 1301 Find the Stuff 未做的: HDU 5179 HDU 4788 ZOJ 3542 搜索: POJ 1606 HDU 5094 HDU 5077 HDU 4394 DP: POJ 3254 Corn Fields POJ 1185 炮兵阵地 CF 165E Compatible Numbers HDU 5045 Contes...阅读全文

博文 2018-08-27 14:31:05 code12hour

Go语言核心之美 2.2-浮点数

Go提供了两种size的浮点数,float32和float64。它们的算术规范是由IEEE754国际标准定义,现代CPU都实现了这个规范。 浮点数能够表示的范围可以从很小到很巨大,这个极限值范围可以在math包中获取,math.MaxFloat32表示float32的最大值,大约是3.4e38,math.MaxFloat64大约是1.8e308,两个类型最小的非负值大约是1.4e-45和4.9e-324。 float32大约可以提供小数点后6位的精度,作为对比,float64可以提供小数点后15位的精度。通常情况应该优先选择float64,因此float32的精确度较低,在累积计算时误差扩散很快,而且float32能精确表达的最小正整数并不大,因为浮点数和整数的底层解释方式完全不同,具体见I...阅读全文

博文 2017-10-27 20:58:23 erlib

go - bufio 缓冲读写详解级实例

go在提供了io包的同时也提供了bufio包来实现有缓存的读写操作以提高读写性能。为什么bufio性能比io高呢? 缓冲读写 缓冲读 // 默认缓冲区大小 const ( defaultBufSize = 4096 ) // 最小缓冲区大小 自定义小于次阈值将会被覆盖 const minReadBufferSize = 16 // 使用默认缓冲区大小 bufio.NewReader(rd io.Reader) // 使用自定义缓冲区大小 bufio.NewReaderSize(rd io.Reader, size int) 缓冲读的大致过程如下,设定好缓冲区大小buf_size后,读取的字节数为rn,缓冲的字节数为bn: 如果缓冲区为空,且 rn >= buf_size,则直接从文件读取,不...阅读全文

博文 2019-06-15 17:32:39 big_cat

[BUG]int64(1.1*float64(time.Minute))会报错但其他浮点数不会

可参考stackoverflow https://stackoverflow.com/questions/47568254/why-int641-1float64time-minute-is-error-but-int641-1float64time-minute 今天写着写着发现这个活见鬼的bug,想不懂为什么 int64(1.1*float64(time.Minute)) 就编译不过,其他浮点数就可以,没想通哪里不符合类型转换条件了 而且把这句话拆开来写就pass......阅读全文

golang的scan标准库(fmt.scan的使用)

载自https://www.cnblogs.com/golove/p/5888441.html标准库 - fmt/scan.go 解读 // Copyright 2010 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // go/src/fmt/scan.go // version 1.7 // 格式化输入输出的用法请参考:http://www.cnblogs.com/golove/p/3284304.html package fmt import ( "er...阅读全文

博文 2018-10-08 17:35:50 ck_god

golang unicode/utf8

简介 // Package utf8 implements functions and constants to support text encoded in // UTF-8. It includes functions to translate between runes and UTF-8 byte sequences. package utf8 包utf-8实现的功能和常量用于文章utf8编码,包含runes和utf8字节序列的转换功能.在unicode中,一个中文占两个字节,utf-8中一个中文占三个字节,golang默认的编码是utf-8编码,因此默认一个中文占三个字节,但是golang中的字符串底层实际上是一个byte数组. package main import ( "fm...阅读全文

博文 2019-07-23 17:32:42 第八共同体

Golang walkthrough: io package

Golang walkthrough: io package Go是用于处理字节的编程语言。 无论您有字节列表,字节流还是单个字节,Go都可以轻松处理。 从这些简单的原语,我们构建了我们的抽象和服务。 io包是标准库中最基础的包之一。 它提供了一组用于处理字节流的接口和助手。 这篇文章是一系列演练的一部分,可以帮助您更好地了解标准库。 虽然官方的文档提供了大量的信息,但是在现实世界的环境中还是很难理解库的意思。 本系列旨在提供如何在每天应用程序中使用标准库包的上下文。 如果您有任何问题或意见,可以在Twitter上的@benbjohnson与我联系。(当然也可以联系我,listomebao@gmail.com) Reading bytes 字节有两个最基本的操作,读和写。让我们先看如何读字节...阅读全文

博文 2018-01-16 13:39:52 sheepbao.github.io

Golang包——bytes

byte.Buffer 扩容策略 b.buf = b.buf[:length+need] 新容器的容量 =2* 原有容量 + 所需字节数 内容泄露 内容泄露是指,使用Buffer值的一方通过某种非标准的(或者说非正式的)的方法,得到了本该得不到的内容 性能测试 func BenchmarkStrBuilder(b *testing.B) { str := strings.Builder{} str.WriteString("test") for i := 0; i < b.N; i++ { str.String() } } func BenchmarkByteBuffer(b *testing.B) { byte := bytes.Buffer{} byte.WriteString("tes...阅读全文

博文 2019-04-02 20:34:41 羊羽share

golang比较浮点数是否相等

由于小数二进制和十进制转换的时候,会有精度丢失的问题,所以我们在比较浮点数是否相等,指的是在一定精度范围内的两个浮点数是否相等。 参看了网上其他人的实现 实现1,实现2 基本上都一样,于是我就改了几个值验证了一下, 结果发下 package main import ( "fmt" "math" ) const MIN = 0.000001 // MIN 为用户自定义的比较精度 func IsEqual(f1, f2 float64) bool { return math.Dim(f1, f2) < MIN } func main() { a := 0.9 b := 1.0 if IsEqual(a, b) { fmt.Println("a==b") }else{ fmt.Println("a...阅读全文

博文 2020-04-15 09:32:50 郭青耀

Go36-38,39-bytes包

基本操作 bytes包和strings包非常相似,单从它们提供的函数的数量和功能上看,差别微乎其微。 strings包主要是面向Unicode字符和经过UTF-8编码的字符串,而bytes包主要是面对字节和字节切片。 bytes.Buffer类型 Buffer类型的用途主要是作为字节序列的缓冲区。 bytes.Buffer是开箱即用的。可以进行拼接、截断其中的字节序列,以各种形式导出其中的内容,还可以顺序的读取其中的子序列。所以是集读、写功能与一身的数据类型,这些也是作为缓冲区应该拥有的功能。 在内部,bytes.Buffer类型使用字节切片(bootstrap字段)作为内容容器。还有一个int类型(off字段)作为已读字节的计数器,简称为已读计数。不过这里的已读计数是不无获取也无法计算得到...阅读全文

博文 2019-02-03 10:35:13 骑士救兵

Golang学习 - unicode/utf8 包

// 编码所需的基本数字 const ( RuneError = '\uFFFD' // 错误的 Rune 或 Unicode 代理字符 RuneSelf = 0x80 // ASCII 字符范围 MaxRune = '\U0010FFFF' // Unicode 码点的最大值 UTFMax = 4 // 一个字符编码的最大长度 ) // 将 r 转换为 UTF-8 编码写入 p 中(p 必须足够长,通常为 4 个字节) // 如果 r 是无效的 Unicode 字符,则写入 RuneError // 返回写入的字节数 func EncodeRune(p []byte, r rune) int // 解码 p 中的第一个字符,返回解码后的字符和 p 中被解码的字节数 // 如果 p 为空,则...阅读全文

博文 2019-04-19 18:34:40 佛心看世界

Go 字符串格式化

文地址:https://www.kancloud.cn/itfanr/go-by-example/81647 Go对字符串格式化提供了良好的支持。下面我们看些常用的字符串格式化的例子。 package main import "fmt" import "os" type point struct { x, y int } func main() { // Go提供了几种打印格式,用来格式化一般的Go值,例如 // 下面的%v打印了一个point结构体的对象的值 p := point{1, 2} fmt.Printf("%v\n", p) // 如果所格式化的值是一个结构体对象,那么`%+v`的格式化输出 // 将包括结构体的成员名称和值 fmt.Printf("%+v\n", p) // `...阅读全文

博文 2020-02-12 18:33:15 1350368559

关于写文章的反思

看了一下我之前写的文章,有多少是水篇数?复制别人的列子有多少? 自已真正有心得的,又写了多少? 我过了需要用数量来证明自己的时候了 从今天开始,删掉那些水文,质量不高的,尽可能完善。 我可能写不了多好,但是我要求我写的东西能拿得出手。 补: session及JWT及Oath的使用。 MySql的sql语句优化。 Git遇到的问题及解决方案。 Golang的使用及避坑。 用心点...阅读全文

博文 2018-07-27 09:34:48 送你一碗大麦茶

Go的内存对齐和指针运算详解和实践

#### uintptr 和 unsafe普及 ##### uintptr 在Go的源码中uintptr的定义如下: ```go /* uintptr is an integer type that is large enough to hold the bit pattern of any pointer. 从英文注释可以看出 uintptr是一个整形,它的大小能够容纳任何指针的位模式,它是无符号的,最大值为:18446744073709551615,怎么来的,int64最大值 * 2 +1 */ type uintptr uintptr ``` **位模式**:内存由字节组成.每个字节由8位bit组成,每个bit状态只能是0或1.所谓位模式,就是变量所占用内存的所有bit的状态的序列 *...阅读全文

博文 2020-01-09 09:28:40 SunPengWei

Go基础系列:简单数据类型

每一个变量都有数据类型,Go中的数据类型有: 简单数据类型:int、float、complex、bool和string 数据结构或组合(composite):struct、array、slice、map和channel 接口(interface) 当声明变量的时候,会做默认的赋0初始化。每种数据类型的默认赋0初始化的0值不同,例如int类型的0值为数值0,float的0值为0.0,string类型的0值为空"",bool类型的0值为false,数据结构的0值为nil,struct的0值为字段全部赋0。 其实函数也有类型,不过一般称之为返回类型。例如,下面的函数foo的返回类型是int: func foo() int { ...CODE... return INT_TYPE_VALUE } 函...阅读全文

博文 2018-11-23 09:10:24 f-ck-need-u

Golang 笔记之深入浮点数

引言下面的一段简单程序 0.3 + 0.6 结果是什么?1 var f1 float64 = 0.32 var f2 float64 = 0.63 fmt.Println(f1 + f2)有人会天真的认为是0.9,但实际输出却是0.8999999999999999(go 1.13.5)问题在于大多数小数表示成二进制之后是近似且无限的。以0.1为例。它可能是你能想到的最简单的十进制之一,但是二进制看起来却非常复杂:0.0001100110011001100…其是一串连续循环无限的数字(涉及到10进制转换为2进制,暂不介绍)。结果的荒诞性告诉我们,必须深入理解浮点数在计算机中的存储方式及其性质,才能正确处理数字的计算。golang 与其他很多语言(C、C++、Python…)一样,使用了IEEE...阅读全文

博文 2020-01-13 16:33:45 jonson_jackson

Ruby程序员的Golang之旅03

Golang声明变量 VS Ruby声明变量 所有编程语言里面,我敢相信没有一门能比在Ruby里面声明一个变量来的更加快活了,以至于我再刚开始使用Golang的时候,被各种类型限制搞得十分头疼 foo = 1 => 1 foo.class => Fixnum foo = 1.0 => 1.0 foo.class => Float foo = 1111111111111111111111111111111 => 1111111111111111111111111111111 foo.class => Bignum foo = "bar" => "bar" foo.class => String a,b,c = 1,'2',3 => [1, "2", 3] ... 不需要var 关键字,也不需要...阅读全文

博文 2017-08-13 14:05:11 peter_ji

Golang基础之格式化输出符号详解

fmt包的格式化输出输入 格式 含义 %% 一个%字面量 %b 一个二进制整数值(基数为2),或者是一个(高级的)用科学计数法表示的指数为2的浮点数 %c 字符型。可以把输入的数字按照ASCII码相应转换为对应的字符 %d 一个十进制数值(基数为10) %e 以科学记数法e表示的浮点数或者复数值 %E 以科学记数法E表示的浮点数或者复数值 %f 以标准记数法表示的浮点数或者复数值 %g 以%e或者%f表示的浮点数或者复数,任何一个都以最为紧凑的方式输出 %G 以%E或者%f表示的浮点数或者复数,任何一个都以最为紧凑的方式输出 %o 一个以八进制表示的数字(基数为8) %p 以十六进制(基数为16)表示的一个值的地址,前缀为0x,字母使用小写的a-f表示 %q 使用Go语法以及必须时使用转义,...阅读全文

博文 2019-06-29 01:32:40 Holechain

golang[40]-区块链-wif倒推出私钥

wif倒推出私钥123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150...阅读全文

博文 2018-12-14 00:35:43 jonson_jackson

golang[39]-区块链-产生wif私钥

压缩公钥公钥一般来说是椭圆曲线上的x,y坐标拼接在一起的。压缩的公钥其实就是x的坐标。WIF 私钥产生12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182package mainimport ("encoding/hex""crypto/sha256""math/big""fmt")//base58编码var b58Alphabet = []byte("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghij...阅读全文

博文 2018-12-14 00:35:43 jonson_jackson

golang oss上传文件

1、上传文件 - oss上传Byte数组 代码: func UploadFile(c *gin.Context) error { var( err error ) /* 通过form-data上传文件,文件名:file */ file,err := c.FormFile("file") if err != nil { return err } fileHandle,err := file.Open() //打开上传文件 if err != nil { return err } defer fileHandle.Close() fileByte,err := ioutil.ReadAll(fileHandle) //获取上传文件字节流 if err != nil { return err } ...阅读全文

博文 2020-06-18 02:32:51 你的昵称是不对的

Go的内存对齐和指针运算详解和实践

#### uintptr 和 unsafe普及 ##### uintptr 在Go的源码中uintptr的定义如下: ```go /* uintptr is an integer type that is large enough to hold the bit pattern of any pointer. 从英文注释可以看出 uintptr是一个整形,它的大小能够容纳任何指针的位模式,它是无符号的,最大值为:18446744073709551615,怎么来的,int64最大值 * 2 +1 */ type uintptr uintptr ``` **位模式**:内存由字节组成.每个字节由8位bit组成,每个bit状态只能是0或1.所谓位模式,就是变量所占用内存的所有bit的状态的序列 *...阅读全文

博文 2020-01-06 09:12:06 SunPengWei

Golang使用Redis

go使用Redis 文档链接:https://godoc.org/github.com/go-redis/redis import ( "fmt" "github.com/go-redis/redis" ) var ClientRedis *redis.Client const ( REDIS_NETWORK = "tcp" REDIS_HOST = "" REDIS_PORT = "" REDIS_PASSWORD = "" REDIS_DB = 0 ) func init() { options := redis.Options{ Network: REDIS_NETWORK, Addr: fmt.Sprintf("%s:%s", REDIS_HOST, REDIS_PORT), Dia...阅读全文

博文 2020-04-05 13:32:44 是个懒人

老虞学GoLang笔记-变量声明与初始化

开发十年,就只剩下这套Java开发体系了 >>> 变量声明 官方DOC: http://golang.org//spec#Variable_declarations Go中使用全新的关键字var来声明变量。var我们并不陌生,在Javascript 和C#中均有出现。不同的是Go和C#中变量属于强类型,在声明变量后就不允许改变其数据类型。 声明变量有多种形态: var a int //声明一个int类型的变量 var b struct { //声明一个结构体 name string } var a = 8 //声明变量的同时赋值,编译器自动推导其数据类型 var a int = 8 //声明变量的同时赋值 var { //批量声明变量,简洁 a int b string } 变量初始化 变量...阅读全文

go语言学习笔记(三)

分享几门我自学go语言的教程,这几门课可以说是go语言学习的新华字典了!Go语言从入门到实战——简明高效的Go语言实战指南 Google资深工程师深度讲解Go语言Go实战仿百度云盘 实现企业级分布式云存储系统Go语言实战流媒体视频网站Go语言开发分布式任务调度 轻松搞定高性能Crontab高并发&高性能 Go语言开发企业级抽奖项目GO从0到1实战微服务版抢红包系统【区块链实战】Golang公链项目实战go语言教程零基础入门到精通小白的福音:20小时快速入门Go语言一、go语言浮点数表示 go语言浮点数类型有两个,即float32和float64。存储这两个类型的值的空间分别需要4个字节和8个字节。 浮点数类型的值一般由整数部分、小数点“.”和小数部分组成。其中,整数部分和小数部分均由10进制...阅读全文

博文 2019-08-10 18:08:32 zhangaijia

Go 调度器的任务窃取(Work-Stealing)

![](https://raw.githubusercontent.com/studygolang/gctt-images/master/go-work-stealing-in-go-Scheduler/cover.png) > Illustration created for “A Journey With Go”, made from the original Go Gopher, created by Renee French. ℹ️ *这篇文章基于 Go 1.13 环境。* 在 Go 中创建 gorotine 既方便又快捷,然而 Go 在同一时间内最多在一个核上运行一个 gorotine,因此需要一种方法来存放其他的 gorotine,从而确保处理器(processor)负载均衡。 ...阅读全文

博文 2020-03-12 21:43:51 LSivan

4. golang的整数和浮点数以及bool类型

一, 整数 整数,就是存放整数值的,如0, -1, 800等 整数的类型: 类型 有无符号 占用存储空间 值范围 备注 int8 有 1字节 -2^7 ~ 2^-1 int16 有 2字节 -2^15 ~ 2^15 -1 int32 有 4字节 -2^31 ~ 2^31 -1 int64 有 8字节 -2^63 ~ 2^63 -1 uint8 无 1字节 0 ~ 2^8 - 1 uint16 无 2字节 0 ~ 2^16 - 1 uint32 无 4字节 0 ~ 2^32 - 1 uint64 无 8字节 0 ~ 2^64 - 1 int 有 32位系统4个字节 64位系统8个字节 参考int32和int64 uint 无 32位系统uint32 64系统uint64 参考uint32和ui...阅读全文

博文 2020-01-22 17:32:44 瓦灯_c6f0

golang语言渐入佳境[28]-time包核心方法

time包核心方法12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915...阅读全文

博文 2018-12-12 00:35:17 jonson_jackson

「Go」byte、rune与string

不积跬步,无以至千里;不积小流,无以成江海。 码字不易,点赞再看。 byte 占用1个节字,也就是 8 个比特位,所以它和 uint8 类型本质上没有区别,它表示的是 ACSII 表中的一个字符。 如下这段代码,分别定义了 byte 类型和 uint8 类型的变量 a 和 b import "fmt" func main() { var a byte = 65 // 8进制写法: var c byte = '\101' 其中 \ 是固定前缀 // 16进制写法: var c byte = '\x41' 其中 \x 是固定前缀 var b uint8 = 66 fmt.Printf("a 的值: %c \nb 的值: %c", a, b) // 或者使用 string 函数 // fmt.Pr...阅读全文

博文 2020-04-20 21:32:43 不住隔壁的王老师

Golang学习 - bytes 包

对于传入 []byte 的函数,都不会修改传入的参数,返回值要么是参数的副本,要么是参数的切片。 // 转换 // 将 s 中的所有字符修改为大写(小写、标题)格式返回。 func ToUpper(s []byte) []byte func ToLower(s []byte) []byte func ToTitle(s []byte) []byte // 使用指定的映射表将 s 中的所有字符修改为大写(小写、标题)格式返回。 func ToUpperSpecial(_case unicode.SpecialCase, s []byte) []byte func ToLowerSpecial(_case unicode.SpecialCase, s []byte) []byte func To...阅读全文

博文 2019-04-19 18:34:42 佛心看世界

Golang学习 - io 包

先说一下接口,Go 语言中的接口很简单,在 Go 语言的 io 包中有这样一个函数: func ReadFull(r Reader, buf []byte) (n int, err error) 这个函数可以把对象 r 中的数据读出来,然后存入一个缓冲区 buf 中,以便其它代码可以处理 buf 中的数据。 这里有个问题,ReadFull 函数究竟可以读取哪些对象的数据?可以读文件中的数据吗?可以读网络中的数据吗?可以读数据库中的数据吗?可以读磁盘中的扇区吗?可以读内存中的数据吗? 答案是 ReadFull 可以读取任何对象的数据,但是有个前提,就是这个对象必须符合 Reader 的标准。 Reader 的标准是什么呢?下面是 Reader 的定义: type Reader interfac...阅读全文

博文 2019-04-19 18:34:41 佛心看世界

go基本类型使用细节

整型的使用细节 Golang 各整数类型分:有符号和无符号 ,int uint的大小和系统有关。 Golang 的整型默认声明为int型 var n1 = 100 fmt.Printf('n1的数据类型%T',n1) 如何在程序查看某个变量的字节大小和数据类型(使用较多) var n2 int64 = 10 fmt.Printf('n2的 数据类型 %T n2占用的字节数是 %d',n2,unsaft.Sizeof(n2)) 浮点型使用细节 Golang 浮点类型有固定的范围和字段长度,不受具体OS(操作系统)的影响。 Golang 的浮点型默认声明为float64 类型。 浮点型常量有两种表示形式 十进制数形式:如:5.12 .512 (必须有小数点) 科学计数法形式:如:5.1234e2...阅读全文

博文 2019-01-03 18:34:44 StevenQin

Float的基本介绍

关于浮点数,为什么它生来就可能存在误差?带着好奇查阅了一些介绍,然后做了简单汇总。这只是一段知识的开始,后续还会继续完善。—— 荡荡上帝,下民之辟。疾威上帝,其命多辟。天生烝民,其命匪谌。靡不有初,鲜克有终。 Floating-point represent 浮点数在计算机中是如何表示的?因为它有小数点,那么小数点后面的数,该如何用二进制来表示呢?我们都知道,浮点数本身就存在误差,在工作中,你所使用的float都是一个近似数。这又是什么原因导致的呢? 1. Fixed-point fixed-point 是将bit位拆分成固定的两部分:小数点前的部分和小数点后的部分。拿32 bit的fixed-point表示举例,可以将其中的24 bit用于表示整数部分,剩余的8 bit表示小数部分。 假如...阅读全文