방금 Go 언어를 배우기 시작했고 슬라이스에서 임의의 서브 시퀀스를 선택할 함수를 작성하려고합니다. 그러나이 슬라이스에 저장할 수있는 값의 유형을 알 수는 없으며 정수, 문자열 또는 일부 구조체의 요소가 될 수 있습니다. 예를 들어, 가정하자 나는 구조가 다음과 같이입력 슬라이스 인수에 따라 다른 연산을 수행하는 함수 작성
이제type person struct {
name string
age int
}
type animal struct {
name string
age int
breed string
}
, 나는 기능 getRandomSequence를 구축하고자 : 슬라이스 S와 기능 l로부터 무작위로 선택된 요소를 포함하는 슬라이스를 반환하는 길이 (L) 인수로 주어진 내가 겪은 문제는 - 가능한 모든 슬라이스에 대해이 기능을 작동시키는 방법이었습니다. 나는 다음을 시도했다 :
func GetRandomSequence(S interface{}, l int) []interface{} {
switch S.(type) {
case person:
// Do random selection of l elements from S and return them
case animal:
// Do random selection of l elements from S and return them
case int:
// Do random selection of l elements from S and return them
}
return " Not Recognised"
}
누군가가 그런 기능을 어떻게 쓸 수 있는지 제안 할 수 있습니까? S가 어떤 유형의 단일 요소가 되더라도 (즉, []interface{}
대신 interface{}
일 것입니다.) 비슷한 문제 (즉, 일반 기능)를 수행 할 수 있지만이 문제를 해결하는 방법을 찾을 수는 없습니다.
질문 본문에 암시되어있는 것과 같이 다른 슬라이스 유형에서 동일한 작업을 수행하는 방법을 묻거나 제목에 무엇을 말하고 있습니까? –
당신이 처음이라면 최고의 조언은 언어에 맞서 싸우지 않고 그런 기능을 쓰지 않는 것입니다. 둘 또는 셋. – Volker