HiveBrain v1.2.0
Get Started
← Back to all entries
patterngoCritical

Extracting substrings in Go

Submitted by: @import:stackoverflow-api··
0
Viewed 0 times
extractingsubstringsstackoverflow

Problem

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.

  • any slice in Go stores the length (in bytes), so you don't have to care about the cost of the len operation : there is no need to count



  • Go strings aren't null terminated, so you don't have to remove a null byte, and you don't have to add 1 after slicing by adding an empty string.



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

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

Code Snippets

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

Context

Stack Overflow Q#12311033, score: 259

Revisions (0)

No revisions yet.