gpt4 book ai didi

interface - 类型上的 Golang 接口(interface)

转载 作者:数据小太阳 更新时间:2023-10-29 03:31:16 25 4
gpt4 key购买 nike

我是 GO 的新手,我正在使用 golang 编写一个简单的类型接口(interface)。类型定义为:

type Sequence []float64

and the interface is:

type Stats interface {

greaterThan(x float64) Sequence
}

函数 greaterThan(x float64) 应该返回一个与对象中的数字相同的新序列 //除了所有小于或等于 x 的数字都已被删除。

这是我的尝试,但无法编译。我不知道如何解决它。我的问题是:如何从结构类型中删除项目?我应该使用 map 吗? (作为我的尝试)

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)

}

最佳答案

我会这样做:

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

很可能您不应该删除 slice 中的项目,而是构建一个仅包含所需项目的新项目。

出于好奇:你想用 Stat 界面做什么?

关于interface - 类型上的 Golang 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21552226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com