go没有原生的字符串截取函数,但是可以自己手写一个,并处理超出索引和支持倒数取值
func Substr(str string, start, length int) string {
// start截取开始的索引, length截取长度
rs := []rune(str)
rl := len(rs)
end := 0
// 支持负数取值,如果为负数则倒数开始取值
if start < 0 {
start = rl - 1 + start
}
// end 就是开始的位置加上长度等于结束的索引位置
end = start + length
if start > end {
start, end = end, start
}
if start < 0 {
start = 0
}
if start > rl {
start = rl
}
if end < 0 {
end = 0
}
if end > rl {
end = rl
}
return string(rs[start:end])
}