go语言byte类型 go 字符串转byte

Golang的数据类型

1.按长度:int8(-128-127)、int16、int32、int64

成都创新互联公司专注为客户提供全方位的互联网综合服务,包含不限于网站设计制作、做网站、北海网络推广、成都微信小程序、北海网络营销、北海企业策划、北海品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联公司为所有大学生创业者提供北海建站搭建服务,24小时服务热线:18980820575,官方网址:www.cdcxhl.com

2.无符号整型:uint8(0-255)、uint16、uint32、uint64

int:  32位操作系统上就是int32,64位操作系统上就是int64

uint: 32位操作系统上就是uint32,64位操作系统上就是uint64

float32      float64

complex64和complex128

bool

string

byte  和  rune

请Golang深度用户说说,现在Golang的性能可以和C比吗

不可以,完全没有可比性。

Golang的优势是开发速度,C可以自由、精准的操控内存。

拿string类型举个栗子:

1、修改字符串:

golang:需要分配新内存,然后进行内存copy。

c:可直接修改,可realloc。

2、存一段data:

golang:使用[]byte类型,[]byte转成string需要进行内存拷贝(排除掉利用指针进行类型转换的情况)。

c:直接用char[],可读可写。

golang中为了语言的安全性,类似的这种限制有很多,牺牲了一部分性能。但golang的优势也是显而易见的,goroutine、chan都很好用,而c则需要自己进行进程、线程的管控。

Go语言中的字节序

Go中的binary包实现了简单的数字与字节序列的转换以及变长值的编解码

package main

import ( "fmt" "bytes" "encoding/binary" ) func main(){ n := 0x12345678 bytesBuffer := bytes.NewBuffer([]byte{}) //BigEndian 大端顺序存储 LittleEndian小端顺序存储 binary.Write(bytesBuffer, binary.BigEndian, int32(n)) data:=bytesBuffer.Bytes() fmt.Printf("[0]: %#x addr:%#x\n",data[0],data[0]) fmt.Printf("[0]: %#x addr:%#x\n",data[1],data[1]) fmt.Printf("[0]: %#x addr:%#x\n",data[2],data[2]) fmt.Printf("[0]: %#x addr:%#x\n",data[3],data[3]) }

输出

[0]: 0x12 addr:0xc042010248 [1]: 0x34 addr:0xc042010249 [2]: 0x56 addr:0xc04201024a [3]: 0x78 addr:0xc04201024b

也可以使用下面的方式

n := 0x12345678 var data []byte = make([]byte,4) //操作的都是无符号整型 binary.BigEndian.PutUint32(data,uint32(n))

可以使用下面的方式判断当前系统的字节序类型

const INT_SIZE int = int(unsafe.Sizeof(0))

//判断我们系统中的字节序类型 func systemEdian() { var i int = 0x1 bs := (*[INT_SIZE]byte)(unsafe.Pointer(i)) if bs[0] == 0 { fmt.Println("system edian is little endian") } else { fmt.Println("system edian is big endian") } }

当前名称:go语言byte类型 go 字符串转byte
网页链接:https://www.cdcxhl.com/article12/dododdc.html

成都网站建设公司_创新互联,为您提供品牌网站建设小程序开发商城网站网页设计公司虚拟主机建站公司

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都app开发公司