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

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 学生黄哲

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

前期

比如新浪微博发微博的输入框有一个已输入字数的统计,它的规则推测是:汉字和中文标点算 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 青云老师

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

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

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

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

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

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

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

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

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

简介 // 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[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学习 - 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 佛心看世界

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

「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 不住隔壁的王老师

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

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

golang-101-hacks(10)——String

注:本文是对golang-101-hacks中文翻译。 在Go中string是由不可变的字节数组构成的。一旦赋值,就不能修改字符串的值。例如 In Go, string is an immutable array of bytes. So if created, we can't change its value. E.g.: package main func main() { s := "Hello" s[0] = 'h' } 编译结果会提示错误: The compiler will complain: cannot assign to s[0] 对字符串的修改可以将其转换为“byte”数组。但是实际上您并没有对原始字符串进行修改操作,改变的只是一个原始字符串的副本。 To modify...阅读全文

博文 2019-05-30 23:34:40 羊羽share

unsafe包的应用与字节对齐

以一个例子来说明: //misc.go package misc type S struct { i int32 k int8 j int64 } //main.go func main() { s := new(misc.S) //通过unsafe Pointer给未导出的字段赋值 //因为字节对齐,内存中实际分配 //int32|int8| int64 | //|xxxx|x---|xxxxxxxx| p := (*int32)(unsafe.Pointer(s)) *p = int32(10) // 1.unsafe Pointer和uintptr可以互相转换 // 2.unsafe Pointer和其他类型的指针可以互相转换 // 3.unsafe Pointer不能进行指针运算而u...阅读全文

博文 2019-01-02 18:34:45 Cedrus

Go语言中多字节字符的处理

## 1 概述 Go语言的字符串是使用 `UTF-8` 编码的。`UTF-8` 是 `Unicode` 的实现方式之一。本文内容包括:`UTF-8` 和 `Unicode` 的关系,Go语言提供的 `unicode` 包和 `unicode/utf8` 包的使用。 ## 2 `UTF-8` 和 `Unicode` 的关系 `Unicode`一种字符集,是国际标谁化组织(ISO)设计的一个包括了地球上所有文化、所有字母和符号 的编码。他们叫它 `Universal Multiple-Octet Coded Character Set`,简称 UCS,也就是 `Unicode`。`Unicode` 为每一个 字符 分配一个唯一的 码点(Code Point),就是一个唯一的值。例如 康 的码点就...阅读全文

博文 2018-10-30 22:05:53 hanzkering

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

DjanFey的基础库解读--io包(pipe.go)

// Pipe适配器是用来连接期望一个io.Reader的代码和期望一个io.Writer的代码 package my_io import ( "errors" "sync" ) // onceError是一个只会存储一次错误的对象 type onceError struct { sync.Mutex //解析见下面 err error } func (a *onceError) Store(err error) { a.Lock() defer a.Unlock() if a.err!=nil{ return } a.err=err } func (a *onceError) Load() error { a.Lock() defer a.Unlock() return a.err } /...阅读全文

博文 2020-03-10 11:34:25 DjanFy

详解varint编码原理

什么是Varint编码 Varint是一种使用一个或多个字节序列化整数的方法,会把整数编码为变长字节。对于32位整型数据经过Varint编码后需要1~5个字节,小的数字使用1个byte,大的数字使用5个bytes。64位整型数据编码后占用1~10个字节。在实际场景中小数字的使用率远远多于大数字,因此通过Varint编码对于大部分场景都可以起到很好的压缩效果。 编码原理 除了最后一个字节外,varint编码中的每个字节都设置了最高有效位(most significant bit - msb)–msb为1则表明后面的字节还是属于当前数据的,如果是0那么这是当前数据的最后一个字节数据。每个字节的低7位用于以7位为一组存储数字的二进制补码表示,最低有效组在前,或者叫最低有效字节在前。这表明varin...阅读全文

博文 2019-09-26 14:35:47 kevinyan

golang crypt包的AES加密函数的使用

golang AES加密函数的使用 什么是AES AES: Advanced Encryption Standard 高阶加密标准,是用来代替 老的DES的。 AES加密算法的加密块必须是16字节(128bit),所以不足部分需要填充,常用的填充算法是PKCS7。 AES加密算法的key可以是16字节(AES128),或者24字节(AES192),或者是32字节(AES256) AES算法的具体实现种类 ECB:Electronic Codebook Book CBC:Cipher Block Chaining:这是最常见的块加密实现 CTR:Counter CFB:Cipher FeedBack OFB:Output FeedBack 具体的差异我也没去弄明白,知道这么个意思,加密算法稍后...阅读全文

博文 2020-03-13 11:33:01 CodingCode

golang[44]-blockchain-targetHash

比特币目标hash计算过程以之前的bits:181B7B74为例子1234567891011121314151617181920212223242526272829303132333435func main(){ bits,_:= hex.DecodeString("181B7B74") fmt.Printf("%x",CalculateTargetFast(bits))}//18 1B7B74func CalculateTargetFast(bits []byte) []byte{ var result []byte //第一个字节 计算指数 exponent := bits[:1] fmt.Printf("%x\n",exponent) //计算后面3个字节 系数 coeffient:=...阅读全文

博文 2018-12-13 23:35:58 jonson_jackson

Golang 文件读写

Golang 文件读写 读文件 使用ioutil直接读取 package read import ( "fmt" "io/ioutil" "strings" ) // 使用ioutil直接读取 // 读取文件内容,并返回[]byte数据和错误信息。err == nil时,读取成功 func main() { file := "/usr/local/nginx/logs/access.log" if contents, err := ioutil.ReadFile(file); err == nil { //[]byte类型,转换成string类型后会多一行空格,使用strings.Replace替换换行符 result := strings.Replace(string(contents),...阅读全文

博文 2019-08-01 14:32:43 战神悟空

05Go语言fmt包详解

Go语言fmt包详解 格式化输出函数 func Print(a ...interface{}) (n int, err error) Print采用默认格式将其参数格式化并写入标准输出。如果两个相邻的参数都不是字符串,会在它们的输出之间添加空格,返回写入的字节数和遇到的任何错误。 func Printf(format string, a ...interface{}) (n int, err error) Printf根据format参数生成格式化的字符串并写入标准输出,返回写入的字节数和遇到的任何错误。 func Println(a ...interface{}) (n int, err error) Println采用默认格式将其参数格式化并写入标准输出。总是会在相邻参数的输出之间添加空...阅读全文

小结

在计算机中最小的信息单位是bit,也就是一个二进制位,8个bit组成一个Byte,也就是字节。一个存储单元(一个地址),可以存储一个字节,也就是8个二进制位。计算机的存储器容量是以字节为最小单位来计算的,对于一个有128个存储单元的存储器,可以说它的容量为128字节。 地址总线,是用来传输数据所在地址的,而32位系统一般有32根地址总线,那么所能传输的最大数据地址就是2^32,这里所指的地址是真实的数据地址,即物理地址。用户在使用计算机时能够访问的最大内存不单是由CPU地址总线的位数决定的,还需要考虑操作系统的实现。实际上用户在使用计算机时,进程访问到的地址都是逻辑地址,并不是真实的物理地址,逻辑地址是由操作系统提供的,并维护了逻辑地址和物理地址的映射。对于32位的windows操作系统,提...阅读全文

博文 2018-12-05 21:34:45 越塔打哭你

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-内建变量类型

内建变量类型 bool 、string (u)int、(u)int8、(u)int16、(u)int32、(u)int64、uintptr 有u的是无符号整数 没有u的是有符号整数 int8等是规定长度的 int是不规定长度的,依据操作系统来定(32系统就是32位) uintptr 指针,长度也是依据操作系统 byte(8位)、rune(32位字节,一字节char问题太多) float32、float64、complex64(复数)、complex128(复数) 二 、复数回顾 i = $\sqrt{-1}$ 复数: 3+4 i (3是实部,4i 是虚部) |3 + 4i| = ​ = 5 ​ = -1, ​ = -i, ​ = -1,.. 复数是什么?怎么理解? http://c.bian...阅读全文

博文 2020-01-21 10:32:40 双子城

Golang包——bufio

bufio是“buffered I/O”的缩写 bufio.Reader type Reader struct { buf []byte // 缓存 rd io.Reader // 底层的io.Reader // r:从buf中读走的字节(偏移);w:buf中填充内容的偏移; // w - r 是buf中可被读的长度(缓存数据的大小),也是Buffered()方法的返回值 r, w int err error // 读过程中遇到的错误 lastByte int // 最后一次读到的字节(ReadByte/UnreadByte) lastRuneSize int // 最后一次读到的Rune的大小(ReadRune/UnreadRune) } 初始化函数 //NewReader函数用来返回一个...阅读全文

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

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 王一白

【go】指针的风骚操作(结合unsafe.point与uintptr)

指针是具有类型的 总所周知,声明的变量都是有具体类型的,而对于存储指针的变量是否有类型,有时是一头雾水,在此做一个小总结,指针是具有类型的。 就如: var c int fmt.Println(reflect.TypeOf(c)) d := &c fmt.Println(reflect.TypeOf(d)) 结果: int *int 那可能一些人就会有疑问,指针既然具有类型,那指针之间可以进行类型转换吗。就如下面一样操作 #(*Type)ptr a := (*int)(&xx) 在Go 的指针是不支持指针运算和转换 下面就详细说一下指针类型怎么互相转换 不同类型指针的互相转换 go语言是强语言类型,不同类型,不可以跨类型计算、赋值等操作。 如下: num := 2 p := &num fp ...阅读全文

博文 2020-04-06 21:32:54 dongzaidong

Golang学习笔记-基本类型

整型 类型名称 有无符号 大小 int8 是 1字节 int16 是 2字节 int32 是 4字节 int64 是 8字节 uint8 否 1字节 uint16 否 2字节 uint32 否 4字节 uint64 否 8字节 int 是 编译的目标平台为32位时占4字节,64位占8字节 uint 否 编译的目标平台为32位时占4字节,64位占8字节 rune 是 同int32 byte 否 同uint8 uintptr 否 同uint rune表示一个Unicode code point,本质上是int32。 byte强调数值是原始数据而不是一个小的整数,本质上是uint8。 uintptr用于指针运算,本质上是uint。 浮点型 Go提供了两种浮点数类型,float32和float64,...阅读全文

博文 2019-08-29 13:32:48 土豆吞噬者

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

Hi,大家好呀,我是一个刚学习 Go 语言不久的新手,在入门 Golang 的这段时间里,我写了很多详细的学习笔记,很适合新手学习噢。这些文章已经发布在我的个人微信公众号里:《Go编程时光》里,今天开始将文章内容搬运到这里,希望有更多的人看到,给更多的人带来帮助,但是这里文章会相对滞后,想获取最新文章,可以前往关注《Go编程时光》,请放心关注,这是一个纯分享的号,完全没有广告。 1. byte 与 rune byte,占用1个节字,就 8 个比特位,所以它和 uint8 类型本质上没有区别,它表示的是 ACSII 表中的一个字符。 如下这段代码,分别定义了 byte 类型和 uint8 类型的变量 a 和 b import "fmt" func main() { var a byte = 6...阅读全文

博文 2020-04-25 20:32:42 Python编程时光

DjanFey的基础库解读--io包

// io包提供了原始I/O的基础接口 // 它的主要工作是去包含这些原始I/O已经存在的实现 // 比如在os包中的这些,抽象出功能做成共享接口,加上其它相关的原始I/O // 因为这些接口和原始I/O包裹着各种各样的实现的低级操作,除非非常了解客户端否则不能假定他们是并发安全的 package my_io import "errors" // Seek值的来源 const ( SeekStart = 0 //seek对应文件的起始处 SeekCurrent = 1 // seek对应当前的偏距 SeekEnd = 2 // seek对应结尾 ) // ErrShortWrite意味着一个write接收到少于要求字节数的数据,并没有返回一个明确的错误 var ErrShortWrite =...阅读全文

博文 2020-03-06 22:54:36 DjanFy

Golang文件操作

目录相关 //目录创建 Package os func Mkdir(namestring, permFileMode)error { //仅创建一层目录 // Mkdir creates a new directory with the specified name and permission // bits (before umask). // If there is an error, it will be of type *PathError. func MkdirAll(pathstring, permFileMode)error { //创建多级目录 // Fast path: if we can tell whether path is a directory or file,...阅读全文

博文 2020-04-06 21:32:54 标准宅腐基全能选手

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基础语法:变量(二)--十安辰

加号的基础应用 1、当左右两边都是数值型时,为加法运算 2、当左右两边都是字符串运算的时候,做字符串拼接 例子: package main import "fmt" //+号的运用 func main() { var i, j = 1, 2 var r = i + j //加法运算 fmt.Println("r=", r) var str1, str2 = "hello", "world" var str = str1 + str2 //做字符串pin'jie fmt.Println("str=", str) } 变量的数据类型 基本数据类型 (a) 整数类型(int) (b) 浮点类型(float) (c) 字符型(byte) (d) 布尔类型(bool) (e) 字符串类型(string...阅读全文

博文 2020-05-14 08:32:43 十安辰