gpt4 book ai didi

go - 是否可以定义一个变量,其类型取决于 Golang 中的输入

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

学习Go并尝试编写一个以位深度为输入的App,当bitDepth == 8时,定义一个变量为var y []byte ,当bitDepth == 10时,定义一个变量var y []uint16

在 Go 中正确的做法是什么?

最佳答案

因为 go 中没有泛型,如果您使用空接口(interface),即 interface{},您仍然需要进行类型断言。

最好的选择是定义一个接口(interface)来提供您需要的所有功能,并为您需要包装的所有数据类型实现它。

package main

type SliceWrapper interface {
Slice(start, end int) SliceWrapper
Index(index int) int
}

func NewSlice(bitDepth int) SliceWrapper {
switch bitDepth {
case 8:
return make(Uint8Wrapper)
case 16:
return make(Uint16Wrapper)
}
}

type Uint8Wrapper []uint8

func (u Uint8Wrapper) Slice(s, e int) SliceWrapper {
return u[s:e]
}

func (u Uint8Wrapper) Index(i int) int {
return u[i]
}

type Uint16Wrapper []uint16

func (u Uint16Wrapper) Slice(s, e int) SliceWrapper {
return u[s:e]
}

func (u Uint16Wrapper) Index(i int) int {
return u[i]
}

您将需要比我确定的更多的功能,但它比到处乱扔 interface{} 要干净得多。

关于go - 是否可以定义一个变量,其类型取决于 Golang 中的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36950395/

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