golang平台下:
var aa [1]uint8
aa[0] = '\0'
fmt.Println(aa[0])
现象: non-octal character in escape sequence: '
Clang 平台:
char buf[1]={'\0'};
printf("show:%d\n",buf[0]);
现象: 输出0
请问一下,这是什么原因?
C语言在代码层面上字符串需要终止符,'\0'实际上就是0.
golang字符串在代码层面上是经过封装的,不需要你去操作终止符,没有'\0'这个东西。
golang里'\0XX'表示八进制数字,与0XX等价,比如'\010'与010等价,即十进制的8;
同理'\xXX'表示十六进制数字,与0xXX等价,比如'\x10'与0x10等价,即十进制的16.
所以直接用0就行了,或者用'\000'、'\x00'、000、0x00,本质上都是0.
#2
更多评论
Clang里面的'\0'实际就是字节0
golang里面木有这个,因为go的字符串是不需要已字节0结尾,因此你这个编译都会报错
你可以写成下面这样,你可以试试通过tcp之类的传到C里面就是你要的'\0':
```go
func main() {
var aa [1]uint8
aa[0] = 0
fmt.Println(aa[0])
}
```
#1
golang里面的'\0xx'表示的是八进制数字,但是'\0'会被编译器认为是一个非法的八进制数字,编译时就会报错
#3