package mainimport (fmtstringsunsafe_ unsafe)func test1() {bytes := []byte(I am byte array !)str := string(bytes)bytes[0] = i //注意这一行,bytes在这里修改了数据,但是str打印出来的依然没变...
package main
import (
"fmt"
"strings"
"unsafe"
_ "unsafe"
)
func test1() {
bytes := []byte("I am byte array !")
str := string(bytes)
bytes[0] = 'i' //注意这一行,bytes在这里修改了数据,但是str打印出来的依然没变化,
fmt.Println(str)
}
func test2() {
bytes := []byte("I am byte array !")
str := (*string)(unsafe.Pointer(&bytes))
bytes[0] = 'i'
fmt.Println(*str)
}
func test3() {
var data [10]byte
data[0] = 'T'
data[1] = 'E'
var str string = string(data[:])
fmt.Println(str)
}
func str2bytes(s string) []byte {
x := (*[2]uintptr)(unsafe.Pointer(&s))
h := [3]uintptr{x[0], x[1], x[1]}
return *(*[]byte)(unsafe.Pointer(&h))
}
func bytes2str(b []byte) string {
return *(*string)(unsafe.Pointer(&b))
}
func test4() {
s := strings.Repeat("abc", 3)
fmt.Println("str2bytes")
b := str2bytes(s)
fmt.Println("bytes2str")
s2 := bytes2str(b)
fmt.Println(b, s2)
}
func main() {
test1()
test2()
test3()
test4()
}
织梦狗教程
本文标题为:go - str - byte
基础教程推荐
猜你喜欢
- Ruby3多线程并行Ractor使用方法详解 2023-07-23
- R语言绘制折线图实例分析 2022-11-21
- R语言 ggplot2改变柱状图的顺序操作 2022-11-17
- R语言-修改(替换)因子变量的元素操作 2022-11-26
- Swift中重写和重载的使用与对比总结 2023-07-05
- 浅析ELF转二进制允许把 Binary 文件加载到任意位置 2023-07-06
- ruby-on-rails-为使用Rails 4,nginx和乘客的用户设置自定义域 2023-09-21
- ruby on rails validates 2023-09-22
- Swift初始化器与可选链的使用方法介绍 2023-07-08
- win10下使用virtualbox + vagrant配置ruby开发机环境 2023-07-23
