重命名类型后,我无法访问其某些方法

2023-12-29

为了防止项目的不同文件存在多个依赖关系,并且由于我可能会更改数据的呈现方式,我决定为绘制2D包 https://github.com/llgcode/draw2d

由于我不需要其他任何东西,我只是重命名了其中一种类型:

type CanvasContext draw2dimg.GraphicContext

在我的一个模块中,我有以下代码(路径是 CanvasContext 变量):

// initialization and some code omitted for clarity
path.SetFillColor(color.RGBA{0x44, 0xff, 0x44, 0xff})
path.SetStrokeColor(color.RGBA{0x44, 0x44, 0x44, 0xff})
path.SetLineWidth(5)
// some more code here
path.Close()
path.FillStroke()

在路径上的所有这些方法调用中,只有 FillStroke 因编译错误而失败:

path.FillStroke 未定义(类型 *drawing.CanvasContext 没有字段或 方法 FillStroke)

为了防止这种情况,我必须重新定义 FillStroke,而不是任何其他方法,方法是:

func (cc *CanvasContext) FillStroke() {
    gc := draw2dimg.GraphicContext(*cc)
    gc.FillStroke()
}

为什么我只需要重新定义该调用而不需要重新定义任何其他调用?


您应该使用结构嵌入而不是类型定义。检查结构'嵌入 https://golang.org/doc/effective_go.html#embedding' 文档:

但随后推广领域的方法并满足io 接口,我们还需要提供转发方法,例如 这:

func (rw *ReadWriter) Read(p []byte) (n int, err 错误) { 返回 rw.reader.Read(p) }

通过直接嵌入结构,我们避免了这种簿记。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重命名类型后,我无法访问其某些方法 的相关文章

  • 是否可以获取有关 Golang 中调用者函数的信息?

    是否可以获取有关 Golang 中调用者函数的信息 例如 如果我有 func foo Do something func main foo 我怎样才能得到那个foo已被呼叫来自main 我可以用其他语言实现这一点 例如在 C 中我只需要使用
  • 如何解析 Content-Disposition 标头以检索文件名属性?

    使用 go 如何解析从 http HEAD 请求检索到的 Content Disposition 标头以获取文件的文件名 此外 如何从 http HEAD 响应中检索标头本身 这样的事情正确吗 resp err http Head http
  • GOPATH值设置

    我用go1 3 1 windows amd64 msi安装go 安装后GOROOT是默认设置 我发现 D Programs Go bin 在 PATH 中 然后我创建一个 GOPATH 环境变量 使用 go get 命令时 出现错误 软件包
  • 我怎么知道我的所有 goroutine 确实正在使用 golang 的同步包等待一个条件

    我有一个应用程序 我正在创建多个 goroutine 来同时执行某个任务 所有工作协程都会等待条件 事件发生 一旦事件被触发 它们就会开始执行 创建完所有goroutines后 主线程在发送广播信号之前应该知道所有goroutines确实处
  • 如何在特定文件夹中运行 shell 命令

    我可以用这个out err exec Command git log Output 获取将在与可执行位置相同的路径中运行的命令的输出 如何指定要在哪个文件夹中运行命令 exec Command https golang org pkg os
  • 具有继承类型的 Aux 模式推理失败

    我有一个复杂的玩具算法 我希望纯粹在类型级别上表示 根据饮食要求选择当天菜肴的修改 对卷积表示歉意 但我认为我们需要每一层才能达到我想要使用的最终界面 我的代码有一个问题 如果我们表达一个类型约束Aux 模式生成的类型基于另一个泛型类型 它
  • 解组转义 XML

    在 Go 中 我将如何解码此 XML 响应 我尝试过建立一个自定义UnMarshal方法在我的Answerstruct 但我运气不太好
  • 为什么我不能将左大括号放在下一行?

    当我尝试编译以下代码时遇到奇怪的错误 package main import fmt fmt func main var arr 3 int for i 0 i lt 3 i fmt Printf d arr i 错误如下 unexpect
  • C 类型命名约定,_t 或 ALLCAPS

    我一直想知道是否有任何命名约定 例如何时对类型使用全部大写以及何时追加 t 什么时候不使用任何东西 我知道当时 K R 发布了各种有关如何使用 C 的文档 但我找不到任何相关内容 在 C 标准库类型中 t看起来漂亮占主导地位 time t
  • 如何在 Linux 中编写文本模式 GUI? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 当我编写脚本 程序时 我经常想弹出一个简单的文本 gui 来提示输入 我该怎么做 例如 来自 Shel
  • c# 通过内存地址调用方法

    我正在尝试在 C 中的指定内存地址调用函数 以下是我在 C 中的操作方法 typedef void do int i auto doActor do 0xAAAABEEF doActor 1 如果可能的话 如何在 C 中复制这种行为 对 C
  • SQLite支持android的数据类型有哪些

    谁能告诉我 SQLITE 中支持 ANDROID 的数据类型列表 我想确认 TIME 和 DATE 数据类型 这里有一个list http www sqlite org datatype3 htmlSQLite 的数据类型 支持时间和日期间
  • 如何将 Unicode 字符转换为简单形式? [复制]

    这个问题在这里已经有答案了 有没有一个Go库可以Sj str m作为输入和返回Sjostrom作为输出 您可以使用golang org x text unicode norm来处理这个问题 package main import fmt i
  • 时间:2019-03-17 标签:c#backgroundworker和partialclass

    我在实现从堆栈溢出获得的代码时遇到问题 它是关于终止后台工作进程的 我的代码如下 using System using System Collections Generic using System Data using System Dr
  • 正确的文件扩展名或缩写是什么。 golang 的文本/模板?

    我正在考虑为其创建语法荧光笔 但我不知道这种特定类型模板的常规缩写 In 例子之一 http golang org pkg text template example Template helpers从文本 模板 godoc 中 它们引用
  • 如何使信号量超时

    Go 中的信号量是通过通道来实现的 一个例子是这样的 https sites google com site gopatterns concurrency semaphores https sites google com site gop
  • 如何在golang中解析JSON而不需要解组两次

    我有一个 Web 套接字连接 它在 JSON 对象中发送不同类型的消息 并且我想将内容解组到一些已知的结构中 为此 我认为我应该执行以下操作 步骤 1 将 JSON 解组为通用映射 字符串 接口 步骤 2 找到我要找的钥匙 步骤 3 尝试将
  • Python 中的舍入浮点问题

    我遇到了 np round np around 的问题 它没有正确舍入 我无法包含代码 因为当我手动设置值 而不是使用我的数据 时 返回有效 但这是输出 In 177 a Out 177 0 0099999998 In 178 np rou
  • 如何处理最终字符串?

    制作有什么好处吗String as final或者我们可以做String as final 我的理解是 由于 String 是不可变的 因此没有必要将其设为最终的 这是正确的还是人们想要的情况String as Final Code pri
  • select 语句是否保证通道选择的顺序?

    继从这个答案 https stackoverflow com a 25795236 274460 如果一个 goroutine 在两个通道上进行选择 是否保证通道的选择顺序与其发送的顺序相同 我对发送者是单线程的情况特别感兴趣 例如 是否保

随机推荐

  • 使用 Solrj 调用 Solr Scheme API

    基于文档https cwiki apache org confluence display solr Schema API https cwiki apache org confluence display solr Schema API
  • H2 数据库中的 Oracle MERGE 语句

    我们开始使用H2内存数据库进行自动化测试 我们在生产和开发环境中使用 Oracle 因此 我们的想法是复制 H2 测试数据库中的表结构 就像我们的 Oracle 开发数据库中的表结构一样 Oracle SQL 语句包括 MERGE 语句并在
  • Paypal支付失败

    为了将 IPN 发布到我的网站 我更改了沙盒帐户中的一些设置 当我尝试在贝宝端购买后 每次都会发生此错误 急流 异常 N6Rapids5Tools13PimpExceptionE 皮条客 RC 3514 Failure log Use of
  • Web Worker 对每个域每个浏览器的最大 http 连接数的影响

    这个问题是一个延伸最大 HTTP 连接数 https stackoverflow com questions 985431 max parallel http connections in a browser Web Worker 会给这个
  • 使用 Google Drive API 下载 csv 格式的电子表格

    如果这是一个显而易见的问题 我很抱歉 我对 API 还很陌生 我正在使用 python 驱动 api 库 并尝试将 google 电子表格下载为 csv 当我使用 files get 时 它生成一个没有 downloadUrl 的文件 并且
  • Linux JAVA 在路径中但权限被拒绝

    我试图在使用 Yocto Linux 的 Intel Edison 上启用 JAVA 问题是提取 zip 后 我能够检查版本 当将其放入路径时 我根本无法访问 java 由于权限 具体来说 我正在尝试遵循这个tutorial https c
  • C++ 智能指针性能

    与裸指针相比 使用智能指针 尤其是 boost shared ptr 在时间和内存方面的成本要高多少 对于游戏 嵌入式系统的性能密集型部分 使用裸指针是否更好 您是否建议对性能密集型组件使用裸指针或智能指针 取消引用智能指针通常是微不足道的
  • 如何防止自定义 UITableViewCells 在取消选择时闪烁白色?

    我有一个自定义 UITableViewCell 它根据所在行更改颜色 TableViewController m void willDisplayCell GSRSongCell cell atIndexPath NSIndexPath i
  • EF6,与 Windows 8.1 上的 VS 2015 相比,在 Windows 10 上的 VS 2015 中刷新大型数据库优先实体模型需要很长时间

    自从我升级到 Windows 10 以来 我的实体模型几乎不可能更新 打开模型设计器需要很长时间 然后右键单击设计器才能弹出上下文菜单以选择 从数据库更新模型 在 VS 2015 中但在 Windows 8 1 上打开相同的模型要快得多 这
  • 根据节点拆分Xml文档

    我的xml文档看起来像 它实际上是谷歌地图的kml文件
  • 在 Heroku 控制台中创建新模型时出现 NoMethodError (nil:NilClass 的未定义方法“名称”)

    我刚刚推送了 Heroku 并尝试通过rails admin 添加模型来进行一些测试 当我这样做时 我得到了一个通用错误页面 我进入日志并注意到这条消息 NoMethodError nil NilClass 的未定义方法 名称 然后我打开
  • 大型下拉菜单悬停时闪烁

    我在网上找到的大型下拉菜单有问题 它非常适合我的目的 但有时表现得很奇怪 并且存在闪烁问题 我找到它的链接在这里 http bootsnipp com snippets featured mega menu slide down on ho
  • 以编程方式重新安装应用程序 apk,无需下载

    Due to 我需要用户重新安装我的应用程序 以便其他应用程序检测到清单权限 这已经让用户感到沮丧 但此外 我找不到从 data app 中存储的 apk 重新安装应用程序的方法 因此我必须在触发之前将相同版本下载到存储卡通常的安装意图 我
  • 实体框架连接字符串utf8

    我想向我的实体框架数据库应用程序添加 utf8 支持 sql server 2008 r2 我想我需要将字符集添加到连接字符串中 这就是我的connectionString的工作原理 当然是匿名的
  • 如何使用log4j创建多个日志文件

    我想创建单独的日志文件 一个用于信息另一个用于调试 我正在使用下面的 log4j property 文件 请建议如何修改不同文件中的二级日志记录 Root logger option log4j rootLogger info file D
  • 我需要做什么才能在我的 xampp (Windows) 上运行 OpenSSL 扩展? :( [复制]

    这个问题在这里已经有答案了 我已经尝试过所有 但不起作用 我确实将 libeay32 dll 和 ssleay32 dll 放在 System32 windows 文件夹中 并在 php ini 上启用了 php openssl dll 扩
  • 在哪里可以找到特定于应用程序的 context.xml 文件?

    我读到了context xml file 在雄猫中 是特定于应用程序的 我已经从我的 netbeans IDE 创建了两个 Web 项目 并使用 Tomcat 作为服务器 但是我无法找到特定于应用程序的项目context xml文件 我只找
  • 在 for 循环中更改 SVG 线的 strokeDashoffset

    我正在尝试制作一条线扩展的动画 我已经在 css 中拥有它 但我需要在 javaScript 中完成它 因为这是我可以获得我需要的路径长度的唯一方法 我想我已经非常接近了 但它不起作用 有任何想法吗 以下是我的代码 正如你所看到的 我得到了
  • Python 中增加版本号

    我正在尝试对 CVS 中的文件进行版本号更新 我最初的逻辑是更新一个浮点数 1 1 gt 1 2 gt 1 3 它工作得很好 直到我到达 1 9 然后它更新到 2 0 我正在尝试使用此逻辑更新到 1 10 但是当我尝试增加 1 x 中的 x
  • 重命名类型后,我无法访问其某些方法

    为了防止项目的不同文件存在多个依赖关系 并且由于我可能会更改数据的呈现方式 我决定为绘制2D包 https github com llgcode draw2d 由于我不需要其他任何东西 我只是重命名了其中一种类型 type CanvasCo