2014-02-04 4 views
-1

Я новичок в 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) 

} 
+0

Какие сообщения об ошибках показывают попытка компиляции? –

+0

BTW. как видно [здесь] (http://golang.org/pkg/builtin/#delete) 'delete' берет карту (в вашем случае' set') и ключ (в вашем случае 'j') в качестве аргументов. Таким образом, вызов delete будет выглядеть как 'delete (set, i)' not 'delete (set, s [j])' –

ответ

4

Я хотел бы сделать это следующим образом:

package main 
import "fmt" 
type Sequence []float64 
type Stats interface { 
    greaterThan(x float64) Sequence 
} 

func (s Sequence) greaterThan(x float64) (ans Sequence) { 
    for _, v := range s { 
     if v > x { 
      ans = append(ans, v) 
     } 
    } 
    return ans 
} 

func main() { 
    s := Sequence{1, 2, 3, -1, 6, 3, 2, 1, 0} 
    fmt.Printf("%v\n", s.greaterThan(2)) 
} 

См http://play.golang.org/p/qXi5uE-25v

Скорее всего, вы не должны удалить элементы из ломтика, но построить новый содержащие только нужные.

Просто из любопытства: Что вы хотите сделать с интерфейсом Stat?

Смежные вопросы