Why is my go lang string comparison not working as expected? -
i dipping toe go
, have written code check if y or n input:
reader := bufio.newreader(os.stdin) fmt.print("(y / n): ") text, _ := reader.readstring('\n') text = strings.tolower(text) if strings.compare(text, "y") == 0 { fmt.println("true") } else { fmt.println("else") }
when run code & type y
(and press enter) expect see true
else
- can see why?
you want like:
reader := bufio.newreader(os.stdin) fmt.print("(y / n): ") text, _ := reader.readstring('\n') text = strings.tolower(text[0:len(text)-1]) if strings.compare(text, "y") == 0 { fmt.println("true") } else { fmt.println("else") }
as comment above says, readstring()
returns delimiter part of string. you're getting "y\n" , comparing "y" - result false. (you might rather use trim()
function remove whitespace either side of input,instead!)
edit: trim()
suggestion should preferred on original suggestion. otherwise produces non-portable code, illustrated in comments answer. complete revised code:
reader := bufio.newreader(os.stdin) fmt.print("(y / n): ") text, _ := reader.readstring('\n') text = strings.tolower(strings.trim(text," \r\n")) if strings.compare(text, "y") == 0 { fmt.println("true") } else { fmt.println("else") }
Comments
Post a Comment