一尘不染

Go中不同数组类型的相同方法

go

我已经看到了一些类似的问题两种不同的类型如何使用接口在golang中实现相同的方法?,但就我而言,我的类型没有相同的基本类型。我的类型是不同大小的数组。

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()?


阅读 235

收藏
2020-07-02

共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
2020-07-02