String 如何获取Golang字符串的最后X个字符?

String 如何获取Golang字符串的最后X个字符?,string,go,character,String,Go,Character,如果我有字符串“121211122”,我想得到最后3个字符(例如“122”),在Go中是否可能?我查看了字符串包,没有看到类似getLastXcharacters的内容。您可以在字符串上使用a来获取最后三个字节 s := "12121211122" first3 := s[0:3] last3 := s[len(s)-3:] 或者,如果您使用unicode,您可以执行以下操作: s := []rune("世界世界世界") first3 := string(s[0:3])

如果我有字符串“121211122”,我想得到最后3个字符(例如“122”),在Go中是否可能?我查看了
字符串
包,没有看到类似
getLastXcharacters

的内容。您可以在字符串上使用a来获取最后三个字节

s      := "12121211122"
first3 := s[0:3]
last3  := s[len(s)-3:]
或者,如果您使用unicode,您可以执行以下操作:

s      := []rune("世界世界世界")
first3 := string(s[0:3])
last3  := string(s[len(s)-3:])

检查并确认。

答案取决于您所说的“字符”是什么意思。如果你指的是字节,那么:

s := "12121211122"
lastByByte := s[len(s)-3:]
如果您是指utf-8编码字符串中的符文,那么:

s := "12121211122"
j := len(s)
for i := 0; i < 3 && j > 0; i++ {
    _, size := utf8.DecodeLastRuneInString(s[:j])
    j -= size
}
lastByRune := s[j:]
s:=“121211122”
j:=len(s)
对于i:=0;i<3&&j>0;i++{
_,大小:=utf8.DecodeLastRuneInstalling(s[:j])
j-=尺寸
}
lastByRune:=s[j:]

您还可以将字符串转换为[]符文,并对符文片段进行操作,但这会分配内存。

@tommywild from:Strings实际上非常简单:它们只是字节的只读片段,并具有语言的一些额外语法支持。@tommywild还请记住
sh:=(*reflect.SliceHeader)(unsafe.Pointer(&str));sh.Cap=sh.Len;字节:= *(*[]字节)(不安全。指针(SH))< /C>是完全有效的,当然修改它会导致内存损坏。考虑这个问题询问字符,而不是字节,在字符串中,而不是在一个符文片中。在这种情况下,答案似乎与问题不符。答案的“字符串”部分,而符文片段不适用,除非提供了将字符串转换为符文片段的方法来回答问题。我想知道一个比@SimonFox更有效的答案。即使使用
utf8.runecounnstring
也会产生相反的效果,因为它会扫描字符串。