gosubstring

Extracting substrings in Go


I'm trying to read an entire line from the console (including whitespace), then process it. Using bufio.ReadString, the newline character is read together with the input, so I came up with the following code to trim the newline character:

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

Is there a more idiomatic way to do this? That is, is there already a library that takes care of the ending null byte when extracting substrings for you?

(Yes, I know there is already a way to read a line without the newline character in go readline -> string but I'm looking more for elegant string manipulation.)


Solution

  • It looks like you're confused by the working of slices and the string storage format, which is different from what you have in C.

    To remove the last char (if it's a one byte char), simply do

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