在 Go 中提取子字符串

问题描述

看起来您对切片的工作和字符串存储格式感到困惑,这与您在 C 中所拥有的不同。

  • Go 中的任何切片都存储长度(以字节为单位),因此您不必关心len操作的成本:无需计数
  • Go 字符串不是空终止的,因此您不必删除空字节,也不必1通过添加空字符串在切片后添加

删除最后一个字符(如果它是一个字节字符),只需执行

inputFmt:=input[:len(input)-1]

解决方法

我正在尝试从控制台读取整行(包括空格),然后对其进行处理。使用 bufio.ReadString,换行符与输入一起读取,所以我想出了以下代码来修剪换行符:

input,_:=src.ReadString('\n')
inputFmt:=input[0:len(input)-2]+"" //Need to manually add end of string

有没有更惯用的方法来做到这一点?也就是说,是否已经有一个库可以在为您提取子字符串时处理结尾的空字节?