You should assign the results of the split to a variable, instead of calling it twice.

ss := strings.Split(msg, ".")
s := ss[len(ss)-1]
ss

If you're doing this over and over again and it offends you having to use two lines (or two lines plus error handling) instead of one you can abstract it into a function pretty easily:

func lastString(ss []string) string {
    return ss[len(s)-1]
}

s1 := lastString(strings.Split("example.txt", "."))
s2 := lastString(strings.Split("example.jpg", "."))

After all, passing the result of a function as an argument has essentially the same effect as binding it to a variable.