Based on the answer by @peterSO but using generics and works with negative k values:
func rotate[T any](nums []T, k int) []T {
if len(nums) == 0 {
return nums
}
kAbs := int(math.Abs(float64(k)))
r := len(nums) - kAbs%len(nums)
if k > 0 {
nums = append(nums[r:], nums[:r]...)
} else {
nums = append(nums[kAbs:], nums[:kAbs]...)
}
return nums
}