当切片没有足够的元素时,如何访问切片而不惊慌?
我有以下代码:
str = str[:3]
但是由于它的内容长度可能会有所不同,因此当它的元素少于 3 个时,整个程序就会崩溃。有什么办法可以忽略它吗?在 Javascript 中,我可以使用
slice
方法,而不会出现此问题。例如:
str = str.slice(0, 3);
即使字符串长度小于 3,也会对字符串进行切片。
要处理此类情况并模仿类似于 JavaScript 切片方法的行为,您可以创建一个实用程序函数来确保切片边界有效。
package main
import "fmt"
func safeSlice(s string, start int, end int) string {
if start > len(s) {
return ""
}
if end > len(s) {
end = len(s)
}
return s[start:end]
}
func main() {
str := "ab"
fmt.Println(safeSlice(str, 0, 3)) // prints "ab"
}
如果
start
索引大于字符串s的长度,则返回空字符串。这可以防止从越界开始位置进行切片。
如果
end
索引大于s的长度,则将末尾设置为s的实际长度。这可确保您不会尝试切片超出字符串末尾。
然后它使用经过验证的边界返回切片字符串。