相关疑难解决方法(0)

Go中的仿制药会是什么?

最近有很多关于Golang的批评,因为它不支持泛型.这到底是什么意思呢?您如何向来自Ruby等动态类型语言的人解释这一点,这不是一个熟悉的概念?

go

7
推荐指数
1
解决办法
786
查看次数

Go 中的通用函数

我正在学习Go,文档和互动课程说空interface可以容纳任何类型,因为它不需要额外实现的方法。

举个例子:

func describe(i interface{}) {
    fmt.Printf("Type: %T | Value: %v\n", i, i)
}
Run Code Online (Sandbox Code Playgroud)

......会打印出来......

"Type: int | Value: 5" // for i := 5
"Type: string | Value: test" // for i := "test"
... etc
Run Code Online (Sandbox Code Playgroud)

所以我想我的问题是这是否Go's是实现通用功能的方式,或者是否有另一种更合适的方式来实现它们。

generics interface go

7
推荐指数
2
解决办法
8652
查看次数

go编程语言中的任何类型和实现泛型列表

我正在尝试一些编程语言.

我对Go的简单性感到兴奋,但在玩完之后我遇到了一些麻烦.

1.我知道Go不支持泛型和继承.有没有办法实现通用列表?

我考虑使用:

type Any interface { }
Run Code Online (Sandbox Code Playgroud)

但是如何检查值是否为NULL.
我正在寻找一些与C相当的实现

struct List {
  List* tail;
  void* head;
}
Run Code Online (Sandbox Code Playgroud)

或者使用代数数据类型:

data List a = Nil | Cons a (List a)
Run Code Online (Sandbox Code Playgroud)


2.更高级的要求是为具有特定类型字段的对象制作一些容器?
例如,在Scala编程语言中,我可以键入:

val List[Animal { type SuitableFood = Grass} ]
Run Code Online (Sandbox Code Playgroud)

得到ListAnimals,其中有一个成员类型SuitableFoodGrass

oop interface go

3
推荐指数
1
解决办法
4367
查看次数

在Go中输入变量

在Haskell中,map有类型:

map :: (a -> b) -> [a] -> [b]
Run Code Online (Sandbox Code Playgroud)

请注意,a并且b不是绝对类型而是类型变量,这意味着它们可以是任何类型,只要每个变量在特定函数调用中始终引用相同类型即可.如何在Go中做同样的事情?

go

2
推荐指数
1
解决办法
150
查看次数

标签 统计

go ×4

interface ×2

generics ×1

oop ×1