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

TODO:字节序的一些理解

TODO:字节序的一些理解 本文是小编对字节序的片面理解,希望对你有帮助哈。字节序,即字节在电脑中存放时的序列与输入(输出)时的序列是先到的在前还是后到的在前。1.Little endian:将低序字节存储在起始地址,俗称小端2.Big endian:将高序字节存储在起始地址,俗称大端比如一个0x01020304(左高右低)这个整数,在小端下在内存中的布局如下[04][03][02][01] 注意左边是低地址,而右边是高地址在大端下则是[01][02][03][04] 注意左边是高地址,而右边是低地址。比较大端,小端的排序,采用大端方式存储数据是比较符合人类的思维习惯。因为网上有些人对大端,小端的认识不一样;等下小编会写一段golang的代码来论证小端,大端排序的正确性。网络字节序,是指网络...阅读全文

博文 2017-02-10 15:51:12 OneTODO

golang中crypto/sha1包

sha1是安全哈希算法。 const BlockSize = 64 功能说明: SHA1的数据块的字节长度位为64字节。 const Size = 20 功能说明: SHA1的校验和的字节长度为20字节。 package main import ( "fmt" "crypto/sha1" ) func main() { h := sha1.New() h.Write([]byte("hello,sha1")) l := fmt.Sprintf("%x", h.Sum(nil)) fmt.Println(l) ...阅读全文

博文 2018-12-09 17:34:46 laijh

golang编程之时间编程

本文转载于:http://blog.chinaunix.net/uid-24774106-id-4006530.html 编程离不开时间,时间管理,严格的说分成两块,一个是当前的时刻,对应的是一个点,还有是一段时间间隔。本文简单的讲讲go的时间相关的编程,比较简单,高手可以一笑而过。 golang对时间的支持,是package time做的事儿,里面有好多的函数,我就不一一举例学习,毕竟这是官方文档干的事情。我们初步的学习下常用的函数。 第一个是UNIX epoch time,确切的说就是自1970-01-01 00:00:00 GMT以来的秒数,不知道如何获取的,可以在shell下执行 date +%s manu@manu-hacks:~/code/go/self$ date +%s 13...阅读全文

博文 2014-10-04 19:26:10 yavobo

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...阅读全文

go(一)变量

package main import ( "fmt" ) func main() { var a int a = 1 var a1 string a1 = "my is a1" b := 2 b1 := "my is b1" fmt.Println(a, "^^^^", a1) fmt.Println(b, "^^^^", b1) } [ `go run test.go` | done: 208.870174ms ] 1 ^^^^ my is a1 2 ^^^^ my is b1 接下来是件很有趣的,有了python的列表的影子,但go语言称之为“字节数组” package main import ( "fmt" ) func main() { a := "my is b" b := []...阅读全文

博文 2014-10-04 19:26:50 bokun-wang

1.9 新特性预览:Logging, interfaces, and allocation

该文翻译自:http://commaok.xyz/post/interface-allocs/几个星期前,Peter Bourgon在golang-dev开了一个关于标准化日志记录的帖子。 日志很常用,因此性能很快提升。 go-kit日志包使用结构化日志,接口如下:type Logger interface { Log(keyvals ...interface{}) error}调用代码:logger.Log("transport", "HTTP", "addr", addr, "msg", "listening")请注意,进入日志调用的所有内容都将转换为interface{}。 这意味着它分配了不少内存。与另一个结构化日志库zap进行比较。 Zap为了避免内存分配和interface{}使...阅读全文

博文 2017-02-13 02:42:51 方圆

golang生成JSON及解析JSON

一、JSON解析到结构体 在介绍这部分之前先简要介绍一下Json语法 JSON 语法是 JavaScript 语法的子集。JSON 语法是 JavaScript 对象表示法语法的子集。 数据在名称/值对中 数据由逗号分隔 大括号保存对象 中括号保存数组 1.JSON名称/值对 "name" : "value" 2.JSON值 可以是: 数字(整数或浮点数) 字符串(在双引号中) 逻辑值(true 或 false) 数组(在中括号中) 对象(在大括号中) null JSON数据 JSON 数字可以是整型或者浮点型 { "age":30 } JSON对象 JSON 对象在大括号({})中书写: 对象可以包含多个名称/值对: { "name": "runoob", "alexa": 10000, ...阅读全文

博文 2019-02-24 17:34:42 不屈真实

Go语言核心技术(卷一)之2.1-整数

第二章 序 在计算机底层,一切都是比特位。然而计算机一般操作的都是固定大小的值,称之为字(word)。字会被解释为整数、浮点数、比特位数组、内存地址等,这些字又可以进一步聚合成数据包(packet)、像素点、作品集、诗歌或者其它任何对象。Go语言提供了多样化的数据组织方式,这些数据类型既有硬件层面的兼容性,又能让程序员方便的组合成更复杂的数据类型。 Go语言的数据类型分为四大类:基本类型,复合类型,引用类型及接口类型。本章将介绍基本类型:数字,字符串,布尔值。 一、整数 Go语言的数值数据类型包括以下几种:整数,浮点数,复数,每一种都包含了大小(size)不同的数值类型,例如有符号整数包含int8,int16,int32,int64,int。每一种数值类型都会决定值的大小和符号(正负),我们...阅读全文

博文 2016-03-16 15:00:05 abv123456789

Golang Printf、Sprintf 、Fprintf 格式化

https://www.cnblogs.com/dfsxh/p/10316601.html /* %v 输出结构体 {10 30} %+v 输出结构体显示字段名 {one:10 tow:30} %#v 输出结构体源代码片段 main.Point{one:10, tow:30} %T 输出值的类型 main.Point %t 输出格式化布尔值 true %d输出标准的十进制格式化 100 %b输出标准的二进制格式化 99 对应 1100011 %c输出定整数的对应字符 99 对应 c %x输出十六进制编码 99 对应 63 %f输出十进制格式化 99 对应 63 %e输出科学技科学记数法表示形式 123400000.0 对应 1.234000e+08 %E输出科学技科学记数法表示形式 1234...阅读全文

博文 2019-06-18 14:02:47 w85278161

[翻译] effective go 之 Functions

Functions Multiple return values 返回多个值 One of Go's unusual features is that functions and methods can return multiple values. This form can be used to improve on a couple of clumsy idioms in C programs: in-band error returns (such as -1 for EOF) and modifying an argument. Go的函数和方法可以同时返回多个值 这个特性可以改善C程序中的不太理想的多值返回形式 -- 参数传入指针 通过这个指针来修改参数 另外再返回一个值 比如-...阅读全文

博文 2014-10-04 19:26:15 pengfei_xue

golang-MD5

什么是MD5? MD5:为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321. MD5算法具有以下特点: 1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。 2、容易计算:从原数据计算出MD5值很容易。 3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。 4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。 MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。 下面是在goalng下如何实现md...阅读全文

mysql中varbinary、binary、char、varchar异同

binary 与 varbinary 类型和char与varchar类型是相似的,只是他们存储的是二进制数据,也就是说他们是包含字节流而不是字符流,他们有二进制字符的集合和顺序,他们的对比,排序是基于字节的数值进行的 binary与varbinary的最大长度和char与varchar是一样的,只不过他们是定义字节长度,而char和varchar对应的是字符长度。 存储和取出时对尾部空格的处理 char(N)用来存储非二进制字符串,插入时,对于少于N个字符的会自动在尾部加空格,查询时,尾部的空格就会被丢弃掉 vachar(N) 用来存储非二进制字符串,插入时,对于少于N个字符的不填补空格,查询时,尾部的空格不会被丢弃掉 binary(N)存储二进制字符串,插入进,少于N个字节的会自动在尾部加...阅读全文

博文 2018-02-26 11:03:45 zejin2008

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 H...阅读全文

博文 2018-11-07 11:34:43 Y_xx

Golang 格式输出符号

%d int变量 %x, %o, %b 分别为16进制,8进制,2进制形式的int %f, %g, %e 浮点数: 3.141593 3.141592653589793 3.141593e+00 %t 布尔变量:true 或 false %c rune (Unicode码点),Go语言里特有的Unicode字符类型 %s string %q 带双引号的字符串 "abc" 或 带单引号的 rune 'c' %v 会将任意变量以易读的形式打印出来 %T 打印变量的类型 %% 字符型百分比标志(%符号本身,没有其他操作...阅读全文

博文 2019-05-05 04:31:50 zhengzizhi

如何正确理解消息送达成功率?

初接触极光推送的使用者,为了衡量消息推送的质量。经常会纠结到消息的"送达率"这个概念.那么究竟什么是送达率呢?或者如何正确理解消息的送达情况呢?   基本概念   先来看与消息送达相关的几个基本概念:   iOS 目标用户数:匹配推送条件的 iOS 用户的数量。   iOS 推送成功数:推送到 APNS 并被 APNS 成功接收的数量。如果 device token 变更,过期或者与推送环境不匹配则不会成功。   Android 目标用户数:匹配推送的条件的Android 用户数(1个月内与服务器有过连接的用户。如果超过1个月都没有与 JPush server 产生任何连接,那么将不向此用户推送)。   Android 在线推送数:消息推送时,目标用户在线...阅读全文

go源码阅读笔记(math.2)

go源码阅读笔记(math.2) 浮点数与整形数转换math/unsafe.go 在阅读math代码的时候,发现Float64bits以及Float64frombits使用非常多,先查看一下这两个函数是做什么用的 package math import "unsafe" // Float32bits returns the IEEE 754 binary representation of f. func Float32bits(f float32) uint32 { return *(*uint32)(unsafe.Pointer(&f)) } // Float32frombits returns the floating point number corresponding // to ...阅读全文

博文 2016-03-17 00:00:02 qq_15437667

学习记录:go语言中读写文件的小练习

package main import ( "os" "fmt" "bufio" "strings" "strconv" ) func main() { f, _:=os.OpenFile("a.txt", os.O_RDONLY, 0666) defer f.Close() m:=bufio.NewReader(f) char:=0 words:=0 lines:=0 for{ s, ok:=m.ReadString('\n') fmt.Println(s) char+=len(s) words+=len(strings.Fields(s)) lines++ if ok!=nil{ break } } fmt.Println("char:"+toString(char)+",words:"...阅读全文

博文 2014-10-04 19:26:30 明述道长

gRPC源码/transport/流控

流控 代码 https://github.com/messixukej... 在liangzhiyang/annotate-grpc-go基础上补充了部分注释 发送流控 HTTP/2 流量控制的目标,在流量窗口初始值的约束下,给予接收端以全权,控制当下想要接受的流量大小。 算法: 两端(收发)保有一个流量控制窗口(window)初始值。 发送端每发送一个DATA帧,就把window递减,递减量为这个帧的大小,要是window小于帧大小,那么这个帧就必须被拆分。如果window等于0,就不能发送任何帧。 接收端可以发送 WINDOW_UPDATE帧给发送端,发送端以帧内指定的Window Size Increment作为增量,加到window上。 // 用于发送流控。 将当前可用的quota(...阅读全文

博文 2018-06-10 10:34:37 蓝白狂想

一个完整的通过encoding/json信息传递格式,采用http.POST利用进行与服务器通信,并对返回结果进行解析处理的典型案例

package main import ( "fmt" "net/http" "encoding/json" "bytes" ) //需要编码的参数 parameter := map[string]string{"id": 123456} //利用encoding/json包进行编码 jsonstr, err := json.Marshal(parameter) if err != nil { ...阅读全文

抽奖问题分析

普通抽奖问题 问题描述 用户随机抽奖,数据如下: // map中,key代表用户名,value代表成用户下单数 var users map[string]int64 = map[string]int64{ "a": 10, "b": 6, "c": 3, "d": 12, "f": 1, } 思路 随机问题,一般就是通过随机函数从某个范围内随机取出某个数值,则该数值对应的就是中奖用户 在这里,如果我们能给map中每个元素设置对应的索引,即转化为数组,是不是就可以解决问题了呢? 代码实现 func GetAwardUserName(users map[string]int64) (name string) { size := len(users) awardIndex := rand.Intn...阅读全文

博文 2017-09-05 08:34:52 tomorrowwu

Golang的socket编程(一):常用数据结构和函数介绍

工作的原因接触到socket,要使用socket实现一个长连接。之前只在C/C++上用过socket,而且在学校的时候也只是简单的做聊天室小程序,并没有涉及到长连接。突然用到工作项目上,心里还是有点悬的,毕竟网上的资料也不是很多。这里就一步一步记录下学习的过程、遇到的问题以及最重要的——解决问题的方法。 一、说明golang中的socket需要用到net包,里面封装好了很多常用的函数方法以及元素类型。而且无需像C一样要经历socket,bind,listen,accept等等流程,只需要简单的几步流程就能完成,非常方便。 二、IP类型net包中定义的ip类型直接就是byte数组: 1type IP []byte 我们可以使用func parseIP(s string) IP 来把一个ip地址...阅读全文

博文 2018-05-17 09:28:21 马谦的博客

golang io需要牢记的几个点

对于Reader比较麻烦需要记住以下: When Read encounters an error or end-of-file condition after successfully reading n > 0 bytes, it returns the number of bytes read. It may return the (non-nil) error from the same call or return the error (and n == 0) from a subsequent call 对于Write比较简单需要记住一下: Write writes len(p) bytes from p to the underlying data stream. It ret...阅读全文

博文 2016-06-08 12:00:00 anjianliang

golang Endian字节序

golang 字节序 简述 最近看TCP通信发现字节序,对此不太了解,故记录下来。 所谓字节序就是字符顺序。在查看资料常用的有2类排序方式: Big-Endian 高位字节放在内存的低地址端,低位字节放在内存的高地址端。 Little-Endian 低位字节放在内存的低地址段,高位字节放在内存的高地址端。 例如 十进制数255用二进制表示为1111 1111,十进制数256用二进制表示则为1 0000 0000那么这个1存放的位置是在前还是后,就是 Big-Endian 和 ittle-Endian 的区别 golang中 在golang 中 encoding/binary 提供了二进制序列化的功能。 提供read 读取编码 和write写编码的等方法 func Read(r io.Read...阅读全文

博文 2018-01-31 16:33:03 johnL

golang-MD5

什么是MD5? MD5:为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护。该算法的文件号为RFC 1321. MD5算法具有以下特点: 1、压缩性:任意长度的数据,算出的MD5值长度都是固定的。 2、容易计算:从原数据计算出MD5值很容易。 3、抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。 4、强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。 MD5的作用是让大容量信息在用数字签名软件签署私人密钥前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的十六进制数字串)。除了MD5以外,其中比较有名的还有sha-1、RIPEMD以及Haval等。 下面是在goalng下如何实现md...阅读全文

Golang学习(14)——Unicode utf8包

Golang学习 - unicode/utf8 包----------------------------// 编码所需的基本数字const ( RuneError = '\uFFFD' // 错误的 Rune 或 Unicode 代理字符 RuneSelf = 0x80 // ASCII 字符范围 MaxRune = '\U0010FFFF' // Unicode 码点的最大值 UTFMax = 4 // 一个字符编码的最大长度)------------------------------------------------------------// 将 r 转换为 UTF-8 编码写入 p 中(p 必须足够长,通常为 4 个字节)// 如果 r 是无效的 Unicode 字符,则写入 ...阅读全文

博文 2017-02-10 10:20:23 1160636144

go语言总结第二章

var和const :变量和常量的声明 var varName type 或者 varName : = value package and import: 导入 func: 用于定义函数和方法 return :用于从函数返回 defer someCode :在函数退出之前执行 go : 用于并行 select 用于选择不同类型的通讯 interface 用于定义接口 struct 用于定义抽象数据类型 break、case、continue、for、fallthrough、else、if、switch、 goto、default 流程控制 chan用于channel通讯 type用于声明自定义类型 map用于声明map类型数据 range用于读取slice、map、channel数据大写,即...阅读全文

博文 2015-07-22 03:00:00 lovlin

GO代码实现判断字符编码格式及编码格式转换(utf-8、gbk)

# 引入 C/C++的实现请看[https://www.jianshu.com/p/a83d398e3606](https://www.jianshu.com/p/a83d398e3606) 最近使用go开发http服务,在使用http进行通信时,发现接收报文中如果包含中文字符(非utf-8编码),直接使用go将二进制格式数据转换成字符串文本会出现乱码的情况。因为golang中的字符编码格式是utf-8,如果是其他类型的编码,例如gbk,那么直接转码后出现乱码也就理所当然了。 --- # GBK编码格式 为了更好地说明GBK的编码方式,首先在这里先说明一下ASCII码,GB2312, GBK, GB18030的兼容性关系: ![各种编码兼容关系.png](https://upload-ima...阅读全文

博文 2019-11-20 16:23:24 bubbleGarden

Golang代码搜集-基于RSA的公钥加密私钥解密-私钥签名公钥验证

2018年03月02日 22:29:54 阅读数:465 首先由genkey.go生成公钥和私文件,在rsa.go里使用生成的公钥和私钥进行加密和解密 //文件 genkey.go //生成公钥和私钥 pem文件 ```go package main import ( "crypto/rand" "crypto/rsa" "crypto/x509" "encoding/pem" "flag" "log" "os" ) func main() { var bits int flag.IntVar(&bits, "b", 1024, "秘钥长度,默认为1024") if err := GenRsaKey(bits); err != nil { log.Fatal("秘钥文件生成失败") } lo...阅读全文

博文 2018-08-18 19:15:40 yuluxs

Go学习笔记之基础数据类型

http://studygolang.com/articles/1348 1 整数 在 Go 语言中,如果不加特殊前缀,都是10进制表示,例如:“100” 整数可以直接用指数形式,例如:“1E9”,意思是 1 * (10^9),1 乘以 10 的 9 次方 整数的加减法用 + 和 - 号,乘法用 * 号,除法用 / 号, 得到的商是整数,例如 5 / 2 = 2,而 % 号是求余(取模), 例如 5 % 2 = 1 在 Go语言中,整数类型分为带符号整型和不带符号整型,接着又分别按照长度各自划分为4个类型。 带符号整型 int8 int16 int32 int64 不带符号整型 uint8 uint16 uint32 uint 64 除此之外还有默认类型 int 和 uint,目前都是32位...阅读全文

博文 2016-06-16 13:00:16 kungfupanda

go 文件读取和文件实时监控

package main import ( "bufio" "io" "io/ioutil" "log" "os" "time" ) // 一次性读取 func ReadAll(filePth string) ([]byte, error) { f, err := os.Open(filePth) if err != nil { return nil, err } defer f.Close() /* ReadAll从r读取数据直到EOF或遇到error,返回读取的数据和遇到的错误。 成功的调用返回的err为nil而非EOF。 因为本函数定义为读取r直到EOF,它不会将读取返回的EOF视为应报告的错误。 */ return ioutil.ReadAll(f) } // 分块读取 可在速度和内...阅读全文

博文 2019-06-26 17:32:42 战神悟空

【Golang 基础】Go 语言中的基本类型

Go 语言中的基础类型   在 Go 编程语言中,数据类型用于声明函数和属性。数据类型的出现时为了把数据分成所需要用大数据的时候才需要申请大内存,这样可以充分的列用内存。 数值类型 布尔型bool 布尔型的值只可以是常量 true 或者 false,默认值为 false。 字符串类型string 编码统一为 UTF-8 编码标识 Unicode 文本,默认值为空字符串。 整型(默认值为 0) uint8: 无符号 8 位整型(0 ~ 255); uint16:无符号 16 位整型(0 ~ 65535); uint32:无符号 32 位整型(0 ~ 4294967295); uint64:无符号 64 位整型(0 ~ 18446744073709551615); int8:有符号 8 位整型(...阅读全文

博文 2018-09-26 18:34:40 hvkcoder

2020整理的一些面经连接

目前整理的只有这些了,这些已经足够现在的我去研究了 牛客网上的 PHP面经 2019 PHP 社招面经 字节PHP/Golang社招面经 【字节跳动】后端开发实习面经 已拿offer 关于程序设计的一些问题 一年工作经验跳槽字节跳动社招经历分享 简书 腾讯、头条、shopee2019年底面经 知乎 知乎关于头条面试的经...阅读全文

博文 2020-05-15 14:35:40 Bomb_

理解Golang的Time结构

在golang中创建并打印一个时间对象,会看到如下输出 2018-10-26 14:15:50.306558969 +0800 CST m=+0.000401093 前面表示的意义好理解,分别是年月日和时间时区,最后的m=+xxxx这部分代表什么呢? Monotonic Clocks 和 Wall Clocks 根据golang的time包的文档可以知道,golang的time结构中存储了两种时钟,一种是Wall Clocks,一种是Monotonic Clocks。 Wall Clocks,顾名思义,表示墙上挂的钟,在这里表示我们平时理解的时间,存储的形式是自 1970 年 1 月 1 日 0 时 0 分 0 秒以来的时间戳,当系统和授时服务器进行校准时间时间操作时,有可能造成这一秒是20...阅读全文

博文 2018-10-26 19:34:40 simpleapples

golang字符转换

golang是强类型语言,在应用过程中类型转换基本都会用到。下面整理一下常用的类型转换,会持续更新。整形转字符串fmt.Println(strconv.Itoa(100))该方法的源码是:// Itoa is shorthand for FormatInt(i, 10).func Itoa(i int) string { return FormatInt(int64(i), 10)}可以看出是FormatInt方法的简单实现。字符串转整形i, _ := strconv.Atoi("100")fmt.Println(i)64位整形转字符串var i int64i = 0x100fmt.Println(strconv.FormatInt(i, 10))FormatInt第二个参数表示进制,10表...阅读全文

博文 2019-07-30 21:32:40 萌小熙喵

GO语言学习笔记

Go语言的基本数据类型与表达式 基本数据类型 go的数据类型可归纳如下: 基本类型 整型: int、 int8、 int16、 int32、 int64 bool: true、 false 浮点数: float32、 float64 复数: complex64、 complex128 错误(error) 构造类型 数据类型([]) 结构体类型(struct) 指针类型(*) 声明变量 1、整型(int、int8、int16、int32、int64) var i int = 1 //定义整型变量i并赋值1 var j int j = 1 // 也可以这样定义 k := 1 // 还可以这样定义 给整型赋值时需要注意 var a int // a是通用整数类型 var b int32 // b是...阅读全文

博文 2016-04-29 11:00:04 KetanCheung

golang字符、字符串的那些事儿

通过下边的代码可以看出,r实质是int32,占用4个字节,值是25105;s是string,占用3个字节,值是e68891. 推断r应该是unicode编码的,s是utf8编码的. package main import( "fmt" ) func main() { r := '我' fmt.Printf("%t\n", r) // %!t(int32=25105) s := "我" fmt.Printf("%t, %d %x\n", s, len(s), s) // %!t(string=我) 3 e68891 fmt.Printf("%b\n", int32(r)) // 110001000010001 // 0000 0000 0000 0000 0110 0010 0001 0001...阅读全文

博文 2015-12-16 13:00:02 LvanNeo

《Golang 入门系列四》golang的基本数据类型

前言:在 Go 编程语言中,数据类型用于声明函数和变量。数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。 一、数字类型 有符号整数采用2的补码形式表示,也就是最高bit位用来表示符号位,一个n-bit的有符号数的值域是从-2^{n-1}−2​n−1​​到2^{n-1}-12​n−1​​−1。无符号整数的所有bit位都用于表示非负数,值域是0到2^n-12​n​​−1。例如,int8类型整数的值域是从-128到127,而uint8类型整数的值域是从0到255。 1.1 整型 序号 类型和描述 1 uint8: 无符号 8 位整型 (0 到 255) 2 uint16: 无符号 16 位整型 (0 到 65535) 3 ui...阅读全文

博文 2018-02-28 23:33:10 IT--小哥

浅析 Go 语言的数字常量

## 概述 Go 语言的常量的实现方法是 Go 的一个亮点。在 Go 的语言规范中的定义[常量规则](http://golang.org/ref/spec#Constants) 是 Go 独有的。 它们在编译器级别提供 Go 所需要的灵活性,使我们编写的代码可读且直观,同时仍保持类型安全。 本文将会探讨”什么是数字常量“、”它们在最简单的情况下时有怎样的行为“以及”怎样去探讨它们才是最好的“这几个方面,其中会有很多吓人的细节问题、名词和概念,所以本文将会放慢速度慢慢的剖析之。 如果你准备好瞧瞧数字常量的底下有些啥,那就跟我撸起袖子开始干吧: ## 无类型和有类型的数字常量 在 Go 语言中,你既可以在声明常量时指定类型,也可以不指定类型。当我们在代码中声明一个字面量时,我们其实就声明了一个匿...阅读全文

博文 2018-11-07 09:41:50 Alex-liutao

GoLang Go 基础类型

Boolean 布尔值的类型为bool,true或false,默认false var isActive bool // 全局变量声明 var enabled, disabled = true, false // 忽略类型的声明 func test() { var available bool // 一般声明 valid := false // 简短声明 available = true // 赋值操作 } 数值类型 整数类型 整数类型有无符号和带符号两种。 Go同时支持int和uint,这两种类型的长度相同,但具体长度取决于不同编译器的实现。Go里面也有直接定义好位数的类型:rune, int8, int16, int32, int64和byte, uint8, uint16, uint32...阅读全文

TODO:字节的那点事Go篇

TODO:字节的那点事Go篇 (本文go version go1.7.3 darwin/amd64) 在Golang中string底层是由byte数组组成的。 fmt.Println(len(“dsd好”)) 输出的长度是6 fmt.Println(len(string(rune(‘好’)))) 输出的长度是3 fmt.Println(len([]rune(“好的2s”))) 输出的长度是4 所以用string存储unicode的话,如果有中文(中文是由3个字节组成 ),按下标是访问不到的,因为你只能得到一个byte。 要想访问中文的话,还是要用rune切片,这样就能按下标访问。 UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可...阅读全文

博文 2016-12-05 15:00:03 OneTODO

Go语言核心之美 2.1-整数

第二章 序 在计算机底层,一切都是比特位。然而计算机一般操作的都是固定大小的值,称之为字(word)。字会被解释为整数、浮点数、比特位数组、内存地址等,这些字又可以进一步聚合成数据包(packet)、像素点、作品集、诗歌或者其它任何对象。Go语言提供了多样化的数据组织方式,这些数据类型既有硬件层面的兼容性,又能让程序员方便的组合成更复杂的数据类型。 Go语言的数据类型分为四大类:基本类型,复合类型,引用类型及接口类型。本章将介绍基本类型:数字,字符串,布尔值。 一、整数 Go语言的数值数据类型包括以下几种:整数,浮点数,复数,每一种都包含了大小(size)不同的数值类型,例如有符号整数包含int8,int16,int32,int64,int。每一种数值类型都会决定值的大小和符号(正负),我们...阅读全文

golang中encoding/binary包

1、golang包中的binary包是什么? 2、binary为我们开发者提供了哪些内容?以及怎么使用? 3、编解码有哪几种方法? 转化成二进制格式与原本数据转字符串相比会更节省空间 一、golang包中的binary包是什么? 此包实现了对数据与byte之间的转换,以及varint的编解码。 二、binary为我们开发者提供了哪些内容?以及怎么使用? 数据的byte序列化转换 func Read(r io.Reader, order ByteOrder, data interface{}) error func Write(w io.Writer, order ByteOrder, data interface{}) error func Size(v interface{}) int u...阅读全文

博文 2018-12-12 00:34:46 laijh

记一次golang读取redis缓存,统计日活的过程

21天精品区块链课程免费学习,深入实战行家带路,助力开发者轻松玩转区块链! >>> 最近有一个需求是从redis缓存中读取日活,redis缓存中保存着每天每个游戏的日活与局数,类型是hashset,key是$game_id:$log_date,value是玩家ID以及对应的局数,结构如下: 表示在2018-07-18日,game_id=1的游戏的日活与对应局数如下: user_id 局数 1 2 2 3 3 4 4 5 虽然能够知道所有的game_id,但是有些游戏可能没有日活,,一个一个game_id去取日活效率不是很高,所以可以执行redis的keys命令来获取有日活的所有key: 然后遍历每个key,调用hgetall命令来获取每个key对应的日活与局数信息,就可以得出每个游戏的日活与...阅读全文

博文 2018-09-01 14:33:14 Valiben

Go文件操作大全

## 1,介绍 在做对视频文件的处理时,对使用`Go`做文件操作有了锻炼。同时在网上搜索了相关文章和资料,将文件操作的例子整理如下。 [原文连接](https://niannian.cleer.club/category/Go%E6%96%87%E4%BB%B6%E6%93%8D%E4%BD%9C%E5%A4%A7%E5%85%A8/) ## 2,基本操作 ### 2.1 创建空文件 ```go package main import ( "log" "os" ) var ( newFile *os.File err error ) func main() { newFile, err = os.Create("test.txt") if err != nil { log.Fatal(err...阅读全文

博文 2019-04-14 20:39:34 OctopusLian

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-11 21:34:44 豆瓣奶茶

io包 copy - golang

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/aixinaxc/article/details/88591338 在io包中主要是操作流的一些方法,今天主要学习一下copy。 在io包(golang 版本 1.12)中,提供了3个公开的copy方法:CopyN(),Copy(),CopyBuffer(). CopyN(dst,src,n) 为复制src 中 n 个字节到 dst。 Copy(dst,src) 为复制src 全部到 dst 中。 CopyBuffer(dst,src,buf)为指定一个buf缓存区,以这个大小完全复制。 他们的关系如下: 从图可以看出,无论是哪个copy方法最终都是由copyBuffer()这个私有方法实现的。...阅读全文

博文 2019-03-16 09:54:37 aixinaxc

老虞学GoLang笔记-字符串

在所有编程语言中都涉及到大量的字符串操作,可见熟悉对字符串的操作是何等重要。 Go中的字符串和C#中的一样,字符串内容在初始化后不可修改。 需要注意的是在Go中字符串是有UTF-8编码的,请注意保存文件时将文件编码格式改成UTF-8(特别是在windows下)。 初始化 var str string //声明一个字符串 str = "laoYu" //赋值 ch :=str[0] //获取第一个字符 len :=len(str) //字符串的长度,len是内置函数 ,len=5 字符串操作 编码过程中避免不了中文字符,那我们该如何提取一个中文呢?首先我们要知道string[index]获取的是字符byte,就无法像C#中"老虞"[0]来取到‘老’,在Go中需要将字符串转换成rune数组,ru...阅读全文

博文 2015-07-21 15:00:02 Gopher老虞

go语言的字符和字符串

Go语言中的字符 在Go语言中,没有字符类型,字符类型是rune类型,rune是int32的别称。 下面用一个简单的程序来演示字符类型: package main import ( "fmt" "reflect" ) func main() { r := '我' fmt.Printf("%q的类型为:%t 二进制为:%b\n", r, r, r) rType := reflect.TypeOf(r).Kind() fmt.Printf("r的实际类型为:%s\n", rType) } 程序输出: '我'的类型为:%!t(int32=25105) 二进制为:110001000010001 r的实际类型为:int32 那我产生一个问题:Unicode字符的长度是多少?这个问题的问法有没有问题?其...阅读全文

博文 2016-10-26 14:00:01 davidsu33

go语言的文件操作

简单谈一下go语言文件操作的几种方式 package main import ( "bufio" //缓存IO "fmt" "io" "io/ioutil" //io 工具包 "os" ) func check(e error) { if e != nil { panic(e) } } /** * 判断文件是否存在 存在返回 true 不存在返回false */ func checkFileIsExist(filename string) bool { var exist = true if _, err := os.Stat(filename); os.IsNotExist(err) { exist = false } return exist } /** from: http://www...阅读全文

博文 2019-05-24 01:35:09 qq5c9c828bc8d4b