我有一个函数,必须将与字符符文相对应的索引分配给1。我有一个字母片,另一个带字母长度的字节片,例如,单词“ adel”将以字节分配像这样[100110000001000000 ....]进行切片,导致a-到第一索引,d-第四索引等等。但是,如果单词“ a”的第2个字符必须移至下一个字母切片块。我该如何将函数设置为此逻辑?
我只使用了2个字母的块的开头,长度为52位。现在,我出现此错误:
panic: runtime error: index out of range
goroutine 1 [running]:
main.getVector(0xc000080000, 0x1a, 0x1a, 0xc000080000, 0x1a, 0x1a)
C:/Users/agi_a/code/CARDS/stem.go:90 +0x25b
main.main()
C:/Users/agi_a/code/CARDS/main.go:18 +0x156
exit status 2
{
:
var alphabet = []string{
"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r",
"s", "t", "u", "v", "w", "x", "y", "z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
"k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z",
}
var a = make([]byte, len(alphabet))
func converToChar(s string) (r rune) {
new, _ := utf8.DecodeRuneInString(s)
switch {
case 97 <= new && new <= 122:
return new - 96
case 65 <= new && new <= 90:
return new - 64
default:
return r
}
}
func getVector(s []string) []byte {
for _, alph := range alphabet {
for _, str := range s {
if str == alph {
if a[converToChar(alph)-1] == 0 {
a[converToChar(alph)-1] = 1
} else if a[converToChar(alph)-1] == 1 {
a[converToChar(alph)-25] = 1
}
}
}
}
return a
}
}
我希望单词“ adele”的字节片将为[10011000001000000 .... 00001 ......],因为在下一个块中,第二个“ e”将被分配为索引1。 >