美文网首页Golang编程随笔我爱编程
go语言的BytePtrToString实现

go语言的BytePtrToString实现

作者: 从火星来 | 来源:发表于2018-08-16 16:41 被阅读6次

看了很久gosyscall,左看右看里面有BytePtrFromString却没有与之对应的BytePtrToString,很不理解这种别扭的设计,只想骂一句太变态了。虽然可以用cgoC.GoString代替,但是想到windows下面用cgo还要先装MingGW,就感觉很不完美,浑身不舒服。强迫症犯了,必须写一个BytePtrToString给自己治疗一下。

下面就给代码:

//convert C char* (以0结尾) to go string
package cstring
import (
    "bytes"
    "unsafe"
)
func BytePtrToString(p *byte) string {
    buf1 := bytes.NewBufferString("")
    for p1 := p; *p1 != byte(0); p1 = (*byte)(unsafe.Pointer(1 + (uintptr)(unsafe.Pointer(p1)))) {
        buf1.WriteByte(*p1)
    }
    return buf1.String()
}

结束

相关文章

网友评论

    本文标题:go语言的BytePtrToString实现

    本文链接:https://www.haomeiwen.com/subject/vnjobftx.html