go学习(五)——基本数据类型转换
来源:互联网 发布:网络推广活动方案 编辑:程序博客网 时间:2024/05/22 13:22
Go数据类型和C数据类型转换1. 基本类型转换Go转换成C:var i intci:=C.int(i) C转换成Go:vari C.intgoi:=int(i)2. 字符串类型转换Go转换成C:var str stringcstr := C.CString(str)C转换成Go:/*#include <stdlib.h>#include <stdio.h>char foo[] = "hellofoo";char *bar = "hellobar";*/import "C"import "fmt"func main() { fmt.Printf("%s\n", C.GoString(&C.foo[0])) fmt.Printf("%s\n", C.GoString(C.bar))}3. 数组类型转换/*#include <stdio.h>int cIArray[] = {1, 2, 3, 4, 5, 6, 7};*/import "C"import "fmt"func main() { goIArray := C.cIArray[:] fmt.Println(goIArray)}4.Go中的 []byte 转换为C中的 *charbt := make([]byte, 10)c_char := (*C.char)(unsafe.Pointer(&bt)) // 转换5.Go中的string转换为C中的char *var buf string//go string to *C.charvar cmsg *C.char = C.CString(buf)6.C中char[]转换为go中的string说明:实践发现,第3中情况中的转换, C.GoString(&C.foo[0])会可能导致转换后string类型数据错误,为避免数据不能全部转换,特用下面方式转换:char pReadBuf[1024 * 30] = {0};goWriteString := C.GoStringN(&C.pReadBuf[0], 1024*30)Go自身数据类型转换1. golang []byte和string相互转换package mainimport ( "fmt")func main() { str2 := "hello" data2 := []byte(str2) fmt.Println(data2) str2 = string(data2[:]) fmt.Println(str2)}2. []byte转换为整形import( "encoding/binary")//字节转换成整形func BytesToInt(b []byte) int { bytesBuffer := bytes.NewBuffer(b) var tmp int32 binary.Read(bytesBuffer, binary.BigEndian, &tmp) return int(tmp)}
阅读全文
0 0
- go学习(五)——基本数据类型转换
- go学习(二)——基本数据类型和基本语法
- go语言学习-golang的基本数据类型
- go语言学习-golang的基本数据类型
- Go语言学习笔记之基本数据类型
- Java学习------基本数据类型转换
- [go语言]基本数据类型
- go语言基本数据类型
- Go的基本数据类型
- python学习—-基本数据类型
- python学习—-基本数据类型
- Java温习——基本数据类型转换
- Java基础语法(二)—基本数据类型转换
- 黑马程序员—基本数据类型转换
- 【软考】— 基本数据类型转换
- Java入门(6)——集合、基本数据类型和引用数据类型的相互转换
- Java入门(6)——集合、基本数据类型和引用数据类型的相互转换
- redis学习(五)——Set数据类型
- go学习(四)——调用C库
- 出栈序列的统计
- 拥塞控制算法测试——Planetlab平台实验
- 8.2常用类(Object类,Scanner类)
- Java源码阅读-ArrayList
- go学习(五)——基本数据类型转换
- Bagging 与Boosting 特点分析
- HDU1282 最简单的计算机
- 利用可变参数实现求平均值
- HDU-1284-钱币兑换问题(完全背包)
- 单例模式的懒汉模式和饿汉模式
- 哲学家就餐问题
- 如何设置无需fn直接按F1~F10(HP Pavilion Notebook )
- 杭电acm—1013 Digital Roots