golang获取带空格字符串的方法

一般我都是使用fmt包中scan系列函数抓取字符串。但是今天写算法,写到shein一题要求统计字符串中空格,数字,大小写字母,然后统计数字降序,相同时字符大小升序的算法题。因此无论使用scan,scanf,scanln都无法满足要求,一遇到空格就直接返回。使用bufio.reader(os.Stdin).readString(“\n”)可以直接读出整行字符串。附上算法代码

package main

import (
	"fmt"
)

func sort(list []byte, m map[byte]int) {
	for i := 0; i < len(list); i++ {
		issorted := true
		for j := len(list) - 1; j > i; j-- {
			if m[list[j]] > m[list[j-1]] || (m[list[j]] == m[list[j-1]] && list[j-1] > list[j]) {
				list[j], list[j-1] = list[j-1], list[j]
				issorted = false
			}

		}
		if issorted {
			return
		}
	}
}
func main() {
	var s string = "aa   ddd ccAPBc"
	fmt.Scanln(&s)
	fmt.Println(s)
	if len(s) <= 0 {
		fmt.Println(s)
		return
	}
	var m = make(map[byte]int)
	for i := range s {
		m[s[i]]++
	}
	var list []byte
	for i := range m {
		if i == ' ' || (i <= '9' && i >= '0') || (i <= 'Z' && i >= 'A') || (i <= 'z' && i >= 'a') {
			list = append(list, i)
		}
	}
	sort(list, m)
	for i := range list {
		fmt.Print(string(list[i]))
	}
	fmt.Println()

}