Q:

Как вернуть динамический массив из функции в Go

Здраствуйте, начал изучать Go и решил реализовать функцию, которая возвращает sha256 или sha512 для входных данных в зависимости от флага, но столкнулся с проблемой возврата разных типов. Вот код:
    func sha256or512(s string) []byte {
      if *sha { return sha512.Sum512([]byte(s)) }
      return sha256.Sum256([]byte(s))
    }

При компиляции выводит ошибку:
/main.go:20:33: cannot use sha512.Sum512(([]byte)(s)) (type [64]byte) as type []byte in return argument
./main.go:21:23: cannot use sha256.Sum256(([]byte)(s)) (type [32]byte) as type []byte in return argument

Подскажите как решить данную проблему.

A:

Где то так
func sha256or512(s string) []byte {
  if *sha {
    r := sha512.Sum512([]byte(s))
    return r[:]
  }
  z := sha256.Sum256([]byte(s))
  return z[:]
}

а прям так sha256.Sum256([]byte(s))[:] написать нельзя :(

