go - 调用基本类型的方法

标签 go

我有一个来自软件包的类型,内部是[]byte类型,我想作为别名,并且仅使用其几个方法和一些我自己的方法。我遇到的问题是如何调用基础方法?
问题的一个例子:
https://play.golang.org/p/IIGket_W7rk

package main

import (
    "fmt"
)

// Some type from package

type original int

func (o *original) Add() {
    i := *o
    i++
    *o = i
}

// alias type with own method
type alias original

func (o *alias) Add() {
    i := *o
    i.Add()
}

func main() {
    fmt.Println("Hello, playground")

    i := original(2)
    fmt.Println(i)
    i.Add()
    fmt.Println(i)

    o := alias(2)
    fmt.Println(o)
    o.Add()
    fmt.Println(o)

}

最佳答案

您正在对变量的本地副本调用original.Add方法。在接收器上调用它:

type alias original

func (o *alias) Add() {
    (*original)(o).Add()
}

关于go - 调用基本类型的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63439875/

相关文章:

regex - golang正则表达式替换单个数字

caching - Go:处理过多内存申请的最佳方式? mmap,内存还是缓存?

将 []byte 转为 Little/Big-Endian 有符号整数或 float ?

go - 我可以在应用引擎上部署 Golang 应用程序并在不修改代码的情况下读/写文件吗?

go - 使用什么语言编写游戏库,Go 还是 Rust?

amazon-web-services - 尝试在本地访问 DynamoDB 时超时

reflection - Reflect.Value.FieldByName 导致 panic

android - 找不到 gobind 可执行文件

go - Zerolog 中的 Hook 未注册

go - Revel 于 mgo.v2 - 如何将集合中的所有数据作为 json 返回?