在使用go-libp2p编程时,有时候遇到strconv.Atoi: parsing “70 \r”: invalid syntax,如图(1)所示:

出现这个问题的原因是,win10平台在你按回车之后,会在参数的末尾加上\r\n作为换行符,而你的代码只处理了\n的这种情况,没有考虑\r\n这种情况。
解决方法如下:
//老代码
sendData = strings.Replace(sendData, "\n", "", -1)
//改成,新代码
sendData = strings.Replace(sendData, "\n", "", -1)
sendData = strings.Replace(sendData, "\r", "", -1)
虽然go-libp2p这个包是跨平台的,但是它大部分是处理Linux情况。如果要把go-libp2p迁移到windows,则需要修改go-libp2p源码。
此类错误,是由于windows(\r\n)和Linux的换行符(\n) 不同导致的,代码里要考虑平台的不同,进行相应的修改即可。
注意:当从控制台读取输入参数时,Windows平台会在这个参数末尾自动加上\r\n,而Linux平台会在这个参数末尾自动加上\n。