英文:
Same method on different array types in Go
问题
我看到了一些类似的问题(https://stackoverflow.com/questions/31505587/how-can-two-different-types-implement-the-same-method-in-golang-using-interfaces),但在我的情况下,我的类型没有相同的基本类型。我的类型是不同大小的数组。
type Ten [10]byte
type Twenty [20]byte
func (t *Ten) GetByte0() byte {
return t[0]
}
func (t *Twenty) GetByte0() byte {
return t[0]
}
那么,有可能不重复定义这两个方法 GetByte0() 吗?
英文:
I've seen some similar questions (https://stackoverflow.com/questions/31505587/how-can-two-different-types-implement-the-same-method-in-golang-using-interfaces), but in my case my types do not have the same base type. My types are arrays of different sizes.
type Ten [10]byte
type Twenty [20]byte
func (t *Ten) GetByte0() byte {
return t[0]
}
func (t *Twenty) GetByte0() byte {
return t[0]
}
So, it's possible don't to repeat the two methods GetByte0()?
答案1
得分: 1
例如,
package main
import "fmt"
type Ten [10]byte
type Twenty [20]byte
type Number []byte
func (n Number) GetByte(i int) byte {
return n[i]
}
func main() {
t10 := Ten{10}
fmt.Println(t10)
n10 := Number(t10[:])
fmt.Println(n10.GetByte(0))
t20 := Twenty{10, 20}
fmt.Println(t20)
fmt.Println(Number(t20[:]).GetByte(1))
}
输出:
[10 0 0 0 0 0 0 0 0 0]
10
[10 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
20
英文:
For example,
package main
import "fmt"
type Ten [10]byte
type Twenty [20]byte
type Number []byte
func (n Number) GetByte(i int) byte {
return n[i]
}
func main() {
t10 := Ten{10}
fmt.Println(t10)
n10 := Number(t10[:])
fmt.Println(n10.GetByte(0))
t20 := Twenty{10, 20}
fmt.Println(t20)
fmt.Println(Number(t20[:]).GetByte(1))
}
Output:
[10 0 0 0 0 0 0 0 0 0]
10
[10 20 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]
20
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论