Я новичок в GO, и я использую golang для написания простого интерфейса типа. типа определяется как:Интерфейс Golang по типу
type Sequence []float64
and the interface is:
type Stats interface {
greaterThan(x float64) Sequence
}
Функции greaterThan(x float64)
должен возвращать новую последовательность, которая является таким же, как числа в объекте // кроме всех чисел меньше или равных х, были удалены.
Вот моя попытка, но она не будет компилироваться. Я не знаю, как это исправить. Мой вопрос: как я могу удалить элемент из типа структуры? Должен ли я использовать карту? (Как моя попытка)
package main
import "fmt"
type Sequence []float64
type Stats interface {
greaterThan(x float64) Sequence
}
func (s Sequence) greaterThan(x float64) Sequence{
var i int
var f float64
set := make(map[float64]int)
var v = f[i] Sequence
for i, f := range set{
for j := 0; j <= len(s); j++ {
if s[j] <= x {
delete(set, s[j])
}
}
}
return v
}
func display(s Sequence) {
fmt.Println("s.greaterThan(2):", s.greaterThan(2))
}
func main() {
s := Sequence([]float64{1, 2, 3, -1, 6, 3, 2, 1, 0})
display(s)
}
Какие сообщения об ошибках показывают попытка компиляции? –
BTW. как видно [здесь] (http://golang.org/pkg/builtin/#delete) 'delete' берет карту (в вашем случае' set') и ключ (в вашем случае 'j') в качестве аргументов. Таким образом, вызов delete будет выглядеть как 'delete (set, i)' not 'delete (set, s [j])' –