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

Golang学习笔记之字符串(string)

在 Go 中字符串是 byte 数组。可以通过将内容放在双引号 "" 之间的方式来创建一个字符串。字符串是不可变值类型,内部⽤指针指向 UTF-8 字节数组。 • 默认值是空字符串 ""。 • ⽤索引号访问某字节,如 s[i]。 • 不能⽤序号获取字节元素指针, &s[i] ⾮法。 • 不可变类型,⽆法修改字节数组。 • 字节数组尾部不包含 NULL。 runtime.h struct String { byte* str; intgo len; }; (1)使⽤索引号访问字符 。 s := "abc" fmt.Println(s[0]) //97 fmt.Printf("%c\n", s[0]) //a fmt.Println(s[0] == '\x61', s[1] == 'b', s[...阅读全文

博文 2018-12-08 11:34:46 学生黄哲

4. Go语言中byte、rune与字符串区别?

文章首发自公众号:Go编程时光 《Go编程时光》,一个能带你学习 Go 语言的专栏,同时欢迎搜索我的同名公众号【Go编程时光】(排版精美更适合阅读),第一时间获取Go语言干货。 系列导读 1. 一文搞定Go语言开发环境的搭建 2. Go 语言中五种变量创建的方法 3. Go语言中的整型与浮点型 1. byte 与 rune byte,占用1个节字,就 8 个比特位,所以它和 uint8 类型本质上没有区别,它表示的是 ACSII 表中的一个字符。 如下这段代码,分别定义了 byte 类型和 uint8 类型的变量 a 和 b import "fmt" func main() { var a byte = 65 // 8进制写法: var c byte = '\101' 其中 \ 是固定前缀 ...阅读全文

博文 2020-03-31 11:34:44 王一白

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实现延时队列基本原理

主要参考了文章: https://www.cnblogs.com/jkko123/p/7239420.html 更进一步的设计需要参考(未完成) https://tech.youzan.com/queuing_delay/ package main import ( "errors" "fmt" "time" ) const cicleSectionNum = 10 type TaskFunc func(args ...interface{}) //任务 type Task struct { runTime time.Time //初次运行时间 cycleNum int //需要第几圈 curIndex int //当前运行到第几格 //执行的函数 exec TaskFunc params ...阅读全文

博文 2019-07-25 16:32:55 成木2016

Golang bytes.buffer详解

Buffer 介绍 Buffer 是 bytes 包中的一个 type Buffer struct{…} A buffer is a variable-sized buffer of bytes with Read and Write methods. The zero value for Buffer is an empty buffer ready to use. (是一个变长的 buffer,具有 Read 和Write 方法。 Buffer 的 零值 是一个 空的 buffer,但是可以使用) Buffer 就像一个集装箱容器,可以存东西,取东西(存取数据) 创建缓冲器 func main() { buf1 := bytes.NewBufferString("hello") buf2...阅读全文

博文 2019-01-28 15:34:49 小马哥_Magical

Go语言学习笔记3

3.Go语言数据类型 其实前面已经涉及到了数据类型的一些知识点。本篇将仔细地讲讲Go语言的数据类型。 3.1 基本数据类型 名称 宽度(字节) 零值 说明 bool 1 false 布尔类型,真用常量true表示,假用常量false表示 byte 1 0 字节类型,可看作uint8的别名类型 rune 4 0 rune类型,专门存储Unicode编码,可看作uint32的别名类型 int/uint - 0 有符号整数类型/无符号整数类型,宽度与平台相关 int8/uint8 1 0 由8位二进制数表示的有符号整数类型/无符号整数类型 int16/uint16 2 0 由16位二进制数表示的有符号整数类型/无符号整数类型 int32/uint32 4 0 由32位二进制数表示的有符号整数类型/...阅读全文

博文 2016-09-05 09:01:00 u012855229

goLang 文件操作之二

文件读写 1.1 复制文件 package main import ( "os" "log" "io" ) func main(){ //打开原始文件 originalFile,err:=os.Open("test.txt") checkErr(err) defer originalFile.Close() //创建新的文件作为目标文件 newFile,err:=os.Create("test_copy.txt") checkErr(err) defer newFile.Close() //从源中复制字节到目标文件 bytesWritten,err:=io.Copy(newFile,originalFile) checkErr(err) log.Printf("copied %d bytes...阅读全文

博文 2018-02-07 15:34:38 soledad

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

Go语言笔记 | 03-变量的声明和初始化

Go语言笔记 | 03-变量的声明和初始化 变量声明 在 go 语言中声明一个变量一般要用到关键字 var,变量声明的语法:var 变量名 类型 = 表达式。 在声明变量时将变量的类型放在变量的名称之后,和 c 语言不太一样,原因可以参考go 声明语法。 声明一个变量 var i int // 0 声明一个变量列表,同类型的变量 var a, b, c string // "", "", "" 声明一组变量,不同类型的变量 var ( str string // "" avg, sum float32 // 0.0, 0.0 ) 未初始化的变量,系统会自动赋予该类型的零值 变量零值 当一个变量被声明之后,系统自动赋予它该类型的零值 bool 的零值为 false 整数的零值为 0 浮点数的零...阅读全文

博文 2019-01-23 21:34:40 jianggushi

第三章 整形

golang数值类型包括:整形数,浮点数,复数。(不同大小,是否支持正负都是不同类型) 整形 包括有符号的整形 int8 int16 int32 int64以及对应的无符号整形数 uint8 uint16 uint32 uint64 这里面的数字 8,16,32,64对应的是计算机位数 。 这里对应有特定平台的有符号int型与无符号uint型 这两种类型是根据CPU的处理位数来确定对应大小的 uintptr 没有指定大小,但是可以容纳指针。 有符号整形 以最高位代表符号位,超出会导致值为相反符号数 例如 int8 127+1 = -128 在golang中取模运算%的符号总是和被取模数的符号一致 例如: -5%3 与-5%-3 的结果都是 -2 除法运算符 / 的行为依赖于操作数是否全为证书...阅读全文

博文 2018-11-13 00:34:40 zhaoxi_yu

Golang学习 - strconv 包

// 将布尔值转换为字符串 true 或 false func FormatBool(b bool) string // 将字符串转换为布尔值 // 它接受真值:1, t, T, TRUE, true, True // 它接受假值:0, f, F, FALSE, false, False // 其它任何值都返回一个错误。 func ParseBool(str string) (bool, error) // ErrRange 表示值超出范围 var ErrRange = errors.New("value out of range") // ErrSyntax 表示语法不正确 var ErrSyntax = errors.New("invalid syntax") // 将整数转换为字符串形...阅读全文

博文 2019-04-21 22:34:41 佛心看世界

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

Bufio中的一些疑问

各位大神可以帮忙解读下面的代码吗?菜鸟刚写,有的地方了解得不透 万分感激 ```go func main() { sr := strings.NewReader("ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890") buf := bufio.NewReaderSize(sr, 0) b := make([]byte, 10) //返回缓存区,未读取的数据长度 fmt.Println(buf.Buffered()) s, _ := buf.Peek(5) s[0], s[1], s[2] = 'a', 'b', 'c' fmt.Printf("%d %q\n", buf.Buffered(), s) b...阅读全文

Golang 读、写文件

文件的读写是编程语言的常见操作之一,这里将Goang 读取文件的相关操作。 读取文件 读取文件有三种方式: 将文件整个读入内存 按字节数读取 按行读取 具体实现如下: 1、将文件整个读入内存 package main import ( "os" "io/ioutil" "fmt" ) func main() { file, err := os.Open("D:/gopath/src/golang_development_notes/example/log.txt") if err != nil { panic(err) } defer file.Close() content, err := ioutil.ReadAll(file) fmt.Println(string(content)) ...阅读全文

博文 2019-01-16 21:34:41 jerry

Go语言 碎片整理之 文件操作

文件是什么?计算机中的文件是存储在外部介质(通常是磁盘)上的数据集合,文件分为文本文件和二进制文件。 打开和关闭文件 os.Open()函数能够打开一个文件,返回一个*File和一个error。对得到的文件实例调用close()方法能够关闭文件。 func main(){ file,err := os.Open("./main.go") if err != nil{ fmt.Println("open file failed!,err",err) return } fmt.Println("cool!") file.Close() } 为了防止文件忘记关闭,我们通常使用defer注册文件关闭语句。 读取文件 file.Read() 基本使用 Read的方法定义如下:func(f *File)...阅读全文

博文 2019-06-04 00:33:13 霍帅兵

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

Go语言学习笔记3

3.Go语言数据类型 其实前面已经涉及到了数据类型的一些知识点。本篇将仔细地讲讲Go语言的数据类型。 3.1 基本数据类型 名称 宽度(字节) 零值 说明 bool 1 false 布尔类型,真用常量true表示,假用常量false表示 byte 1 0 字节类型,可看作uint8的别名类型 rune 4 0 rune类型,专门存储Unicode编码,可看作uint32的别名类型 int/uint - 0 有符号整数类型/无符号整数类型,宽度与平台相关 int8/uint8 1 0 由8位二进制数表示的有符号整数类型/无符号整数类型 int16/uint16 2 0 由16位二进制数表示的有符号整数类型/无符号整数类型 int32/uint32 4 0 由32位二进制数表示的有符号整数类型/...阅读全文

博文 2016-09-08 09:00:48 u012855229

Golang学习(3)——bytes包

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

博文 2017-02-09 18:26:10 1160636144

Go语言实战笔记(十九)| Go Writer 和 Reader

《Go语言实战》读书笔记,未完待续,欢迎扫码关注公众号flysnow_org或者网站http://www.flysnow.org/,第一时间看后续笔记。觉得有帮助的话,顺手分享到朋友圈吧,感谢支持。 输入和输出Go Writer 和 Reader接口的设计遵循了Unix的输入和输出,一个程序的输出可以是另外一个程序的输入。他们的功能单一并且纯粹,这样就可以非常容易的编写程序代码,又可以通过组合的概念,让我们的程序做更多的事情。 比如我们在上一篇的Go log日志 http://www.flysnow.org/2017/05/06/go-in-action-go-log.html 中,就介绍了Unix的三种输入输出输入模式,他们对应的Go语言里有专门的实现。 12345var ( Stdin ...阅读全文

博文 2017-08-28 02:53:41 飞雪无情

结合 Go 读 APUE-基本文件I/O

在公众号 "别捉急" 上 同步了文章,并且可以点击原文链接阅读:传送门 基本的文件 I/O 我想 open, read, write, lseek, close 这个几个操作就满足了对文件操作的基本需求。当然了,我也是看书是这么写的。 每个语言基本都有对应的函数或方法,我们调用就行,在这种情况下,我们可以理解成 -> 语言就是个工具。我比较偏向 Go 的风格,所以这里我以 Go 的函数库为例,但在介绍其之前,要明白一个概念:文件描述符。 画中重点了: 对于内核而言, 所有打开的文件都通过文件描述符引用。文件描述符是一个非负整数。 对上面的描述还是有点模糊呢? 当打开一个现有文件或创建一个新的文件时,内核向进程返回一个 文件描述符。 当读、写一个文件时,使用 open 或 create 返回的...阅读全文

博文 2017-11-04 01:29:16 x_zhaohu

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 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

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

golang入门案例之SOCKET

//服务端代码package main import ( "fmt" "net" "log" "os" "encoding/binary" ) func main() { //建立socket,监听端口 netListen, err := net.Listen("tcp", "localhost:8090") CheckError(err) defer netListen.Close() Log("Waiting for clients") for { conn, err := netListen.Accept() if err != nil { continue } Log(conn.RemoteAddr().String(), " tcp connect success") handle...阅读全文

博文 2018-01-17 19:30:00 nazhizq

hash.go-几种 hash 函数实现

接口定义type Hash interface { // 嵌入了 io.Writer 接口 // 向执行中的 hash 加入更多数据 // hash 函数的 Write 方法永远不会返回 error io.Writer // 把当前 hash 追加到 b 的后面 // 不会改变当前 hash 状态 Sum(b []byte) []byte // 重置 hash 到初始化状态 Reset() // 返回 hash 结果返回的字节数 Size() int // BlockSize 返回 hash 的基础块大小 // 为了提高效率 // Write 方法传入的字节数最好是 blick size 的倍数 BlockSize() int}// 结果为 32bit hash 函数接口type Hash3...阅读全文

博文 2018-11-08 14:35:55 Csdoker

Golang学习(8)——io 包

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

博文 2017-02-09 18:26:37 1160636144

《Go语言四十二章经》第三十一章 文件操作与IO

《Go语言四十二章经》第三十一章 文件操作与IO 《Go语言四十二章经》第三十一章 文件操作与IO 作者:李骁 ## 31.1 文件系统 对于文件和目录的操作,Go主要在os 提供了的相应函数: ```go func Mkdir(name string, perm FileMode) error func Chdir(dir string) error func TempDir() string func Rename(oldpath, newpath string) error func Chmod(name string, mode FileMode) error func Open(name string) (*File, error) { return OpenFile(name, ...阅读全文

博文 2018-10-13 20:26:30 roteman

go tool pprof 字段翻译

一直对 go tool pprof xxx.prof字段不是很了解,群里人发了官方文档,翻一下做个记录 (pprof) top10 Total: 2525 samples 298 11.8% 11.8% 345 13.7% runtime.mapaccess1_fast64 268 10.6% 22.4% 2124 84.1% main.FindLoops 251 9.9% 32.4% 451 17.9% scanblock 178 7.0% 39.4% 351 13.9% hash_insert 131 5.2% 44.6% 158 6.3% sweepspan 119 4.7% 49.3% 350 13.9% main.DFS 96 3.8% 53.1% 98 3.9% flushptr...阅读全文

博文 2019-08-19 20:02:47 云南厨子

Go语言学习笔记3

3.Go语言数据类型 其实前面已经涉及到了数据类型的一些知识点。本篇将仔细地讲讲Go语言的数据类型。 3.1 基本数据类型 名称 宽度(字节) 零值 说明 bool 1 false 布尔类型,真用常量true表示,假用常量false表示 byte 1 0 字节类型,可看作uint8的别名类型 rune 4 0 rune类型,专门存储Unicode编码,可看作uint32的别名类型 int/uint - 0 有符号整数类型/无符号整数类型,宽度与平台相关 int8/uint8 1 0 由8位二进制数表示的有符号整数类型/无符号整数类型 int16/uint16 2 0 由16位二进制数表示的有符号整数类型/无符号整数类型 int32/uint32 4 0 由32位二进制数表示的有符号整数类型/...阅读全文

博文 2016-09-08 10:00:03 u012855229

go语言的文件简单的操作

Golang读写文件操作 1、读文件 使用golang语言去读取一个文件默认会有多种方式,这里主要介绍以下几种。 使用ioutil直接读取需要引入io/ioutil包,该包默认拥有以下函数供用户调用。 func NopCloser(r io.Reader) io.ReadCloser func ReadAll(r io.Reader) ([]byte, error) func ReadDir(dirname string) ([]os.FileInfo, error) func ReadFile(filename string) ([]byte, error) func TempDir(dir, prefix string) (name string, err error) func Tem...阅读全文

博文 2019-05-30 19:35:11 qq5c9c828bc8d4b

老虞学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的内存对齐和指针运算详解和实践

#### 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

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 佛心看世界

Golang学习 - strconv 包

// 将布尔值转换为字符串 true 或 false func FormatBool(b bool) string // 将字符串转换为布尔值 // 它接受真值:1, t, T, TRUE, true, True // 它接受假值:0, f, F, FALSE, false, False // 其它任何值都返回一个错误。 func ParseBool(str string) (bool, error) ------------------------------ // ErrRange 表示值超出范围 var ErrRange = errors.New("value out of range") // ErrSyntax 表示语法不正确 var ErrSyntax = errors.New(...阅读全文

如何用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

Float的基本介绍

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

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 夜空一起砍猩猩

浮点数格式化输出的原理是什么?

fmt.Printf("1.8350 => %.2f\n",float64(1.835)) fmt.Printf("1.8450 => %.2f\n",float64(1.845)) fmt.Printf("5.8350 => %.2f\n",float64(5.835)) fmt.Printf("5.8450 => %.2f\n",float64(5.845)) fmt.Printf("7.8350 => %.2f\n",float64(7.835)) fmt.Printf("7.8450 => %.2f\n",float64(7.845)) fmt.Printf("8.8350 => %.2f\n",float64(8.835)) fmt.Printf("8.8450 => %.2f\n...阅读全文

博文 2020-05-18 20:43:21 Y-dc

《Go语言四十二章经》第二十八章 unsafe包

《Go语言四十二章经》第二十八章 unsafe包 作者:李骁 ## 28.1 unsafe 包 ```go func Alignof(x ArbitraryType) uintptr func Offsetof(x ArbitraryType) uintptr func Sizeof(x ArbitraryType) uintptr type ArbitraryType int type Pointer *ArbitraryType ``` 这个包中,只提供了3个函数,两个类型。就这么少的量,却有着超级强悍的功能。学过C语言的都可能比较清楚,通过指针,知道变量在内存中占用的字节数,就可以通过指针加偏移量的操作,在地址中,修改,访问变量的值。在Go 语言中,怎么去实现这么疯狂的操作呢?就得靠u...阅读全文

博文 2018-10-12 20:37:14 roteman

3. Go语言中的整型与浮点型

文章首发自公众号:Go编程时光 《Go编程时光》,一个能带你学习 Go 语言的专栏,同时欢迎搜索我的同名公众号【Go编程时光】(排版精美更适合阅读),第一时间获取Go语言干货。 系列导读 1. 一文搞定Go语言开发环境的搭建 2. Go 语言中五种变量创建的方法 1. 整型 Go 语言中,整数类型可以再细分成10个类型,为了方便大家学习,我将这些类型整理成一张表格。 int 和 uint 的区别就在于一个 u,有 u 说明是无符号,没有 u 代表有符号。 解释这个符号的区别 以 int8 和 uint8 举例,8 代表 8个bit,能表示的数值个数有 2^8 = 256。 uint8 是无符号,能表示的都是正数,0-255,刚好256个数。 int8 是有符号,既可以正数,也可以负数,那怎么...阅读全文

博文 2020-03-27 14:34:36 王一白

4. Go 语言数据类型:byte、rune与字符串

Hi,大家好。 我是明哥,在自己学习 Golang 的这段时间里,我写了详细的学习笔记放在我的个人微信公众号 《Go编程时光》,对于 Go 语言,我也算是个初学者,因此写的东西应该会比较适合刚接触的同学,如果你也是刚学习 Go 语言,不防关注一下,一起学习,一起成长。 我的在线博客:http://golang.iswbm.com我的 Github:github.com/iswbm/GolangCodingTime 1. byte 与 rune byte,占用1个节字,就 8 个比特位,所以它和 uint8 类型本质上没有区别,它表示的是 ACSII 表中的一个字符。 如下这段代码,分别定义了 byte 类型和 uint8 类型的变量 a 和 b import "fmt" func main(...阅读全文

博文 2020-04-26 13:33:04 Python编程时光

golang 指针类型引起的神奇 bug

下面是使用的结构体接口抽象定义,其实就是将结构体存进一个 map里。由于是读写都比较频繁,我加了读写锁。 // add progress listener. func (upload *UploaderGateway) AddProgress(key string, v ProgressListener) { upload.mutex.Lock() defer upload.mutex.Unlock() upload.ProgressMap[key] = v } //get progress listener. func (upload *UploaderGateway) GetProgress(key string) (v ProgressListener, err error) { up...阅读全文

博文 2019-06-03 23:34:19 张高元

Golang strconv包使用

// atob.go ------------------------------------------------------------ // ParseBool 将字符串转换为布尔值 // 它接受真值:1, t, T, TRUE, true, True // 它接受假值:0, f, F, FALSE, false, False. // 其它任何值都返回一个错误 func ParseBool(str string) (value bool, err error) func main() { fmt.Println(strconv.ParseBool("1")) // true fmt.Println(strconv.ParseBool("t")) // true fmt.Println...阅读全文

博文 2019-01-28 15:34:50 小马哥_Magical

AES代码实现-Golang源码

引流 : AES 原理 / DES 原理和Golang实现 / 个人主页 参考 : 标准AES-FIPS197 /《深入浅出密码学》 crypto/aes 包 Golang中aes和des采用了相同的设计模式,都实现了cipher.block接口,整体的代码设计思路是类似的。 主要涉及下面三个文件 -aes -cipher.go //提供构造方法,暴露加解密方法 -block.go // Golang加解密的具体实现 -const.go // 定义算法所需要的常量和测试数据 对于包中的其他文件*asm.go , *_gcm.go 是直接操作汇编码进行加解密,前提是操作系统支持。 对于模块中的方法:*Go()表示用纯Go实现的;*Asm()和*Gcm()都是工具人,下面是汇编。 为什么AES整...阅读全文

博文 2020-03-31 23:32:48 Jupiter_Van

[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语言渐入佳境[28]-time包核心方法

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

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

go语言渐入佳境[5]-printf格式化打印

golang输出的格式化打印1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950package mainimport "fmt"func main(){ //通用的格式 str:="jonson" fmt.Printf("%T,%v\n",str,str) //布尔 var booeanl = true fmt.Printf("%T,%t\n",booeanl,booeanl) //特殊字符 fmt.Printf("%%\n") fmt.Printf("\"\n") fmt.Printf("\\\n") //整数 fmt.Printf("%T,%d\n",123,...阅读全文

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

Golang之旅3-基本数据类型

基本数据类型 GO语言中的数据类型十分丰富,包含:整型、浮点型、布尔型,还有数组、切片、结构体、函数、map、通道chanel等 go基本数据类型 整型 无符号整型 uint8:,0到255 uint16:,0到65535 uint32 uint64 有符号整型 int8:-128到127 int16:-32768到32767 int32 int64 其他数字类型 uint:32/64位系统上就是uint32/uint64 int:32/64位系统上就是int32/int64 uintptr:无符号整型,用于存放一个指针 注意: 在使用int和 uint类型时,不能假定它是32位或64位的整型,而是考虑int和uint可能在不同平台上的差异。 获取对象的长度的内建len()函数返回的长度可以...阅读全文

博文 2019-10-19 01:32:43 aside section ._1OhGeD

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