如果struct A嵌入到B中,A上的方法可以访问B的方法和字段吗?

2023-12-14

  struct A {}

  func (a *A) BName(id int) string {
     return a.Name
  }

  struct B {
     *A
     Name string
  }

  func main() {
     b := &B{Name: "abc"}
     fmt.Println(b.Name)
  }

代码失败,我想知道怎么写代码实现,A.BName可以访问B的struct属性Name


这不可能。 struct A 对它嵌入的类型一无所知。想一想,A可以嵌入到any其他结构体,那么你怎么能提前知道 A 嵌入的结构体的类型。

如果你想这样做,你需要将对 B 的引用(外部结构)放入 A 中。

type A struct {
    *B 
}

func (a *A) PrintName() string { return a.B.Name }

type B struct {
    A // no need to use a pointer here
    Name string
}

var b B
b.A.B = &b

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

如果struct A嵌入到B中,A上的方法可以访问B的方法和字段吗? 的相关文章

  • golang.org 包和标准库之间的区别

    我使用 go 已经有一段时间了 我注意到 Go 标准库 和 golang org x 之间存在重复的包 我的问题是 为什么它们被释放两次 在这两者中 我应该使用哪一个 更新的 规范的等 到目前为止我注意到的一些示例包已发布两次 golang
  • 如何在函数内 malloc 结构体数组?代码以其他方式工作

    我正在尝试创建一个函数来创建可变大小的二维函数数组 我正在使用以下代码 它本身似乎工作得很好 typedef struct Starter Properties int TypeB int TypeF int TypeW Randomize
  • GoLang 中的 HTML 部分

    我刚刚开始使用 Go 我想用它创建一个网络应用程序 我现在尝试的是以handlebarsjs 式的方式使用模板 我想将页眉和页脚从主页中取出 以便可以将它们注入到每个网页上 我当前的设置应该是解析主页 页眉和页脚 HTML 文件并缓存它们
  • 当使用 k8s.io/client-go 库的 kubernetes 部署发生更改时获得通知的最佳方式是什么?

    Context 我正在编写一个使用k8s io client go https github com kubernetes client go 图书馆 这里是 godocs https godoc org k8s io client go
  • 如何在 Julia 中引用结构本身

    我有这个代码 struct MyStruct text String function MyStruct text String text text do other things end end 当我写这篇文章时 我意识到朱莉娅没有认识到
  • Go 编译器有窗口化设置选项吗?

    我正在使用 Go 6g 编译 GTK 应用程序 我想知道是否有编译器 链接器选项使其成为 Windows 可执行文件而不是控制台可执行文件 MinGW 有一个 mwindows 选项来实现此目的 目前我必须使用十六进制编辑器手动更改 PE
  • 使用泛型:类型参数 T 不能与 == 进行比较

    我正在操场上玩 Go Generics 尝试编写一些通用数组函数 https gotipplay golang org p vS7f Vxxy2j https gotipplay golang org p vS7f Vxxy2j packa
  • OOP 中的对象和结构有什么区别?

    对象与结构体有何区别 我们何时以及为何使用对象而不是结构体 数组与两者有何不同 何时以及为何使用数组而不是对象或结构 我想了解每个的用途 显然 您可以根据您的编程风格模糊这些区别 但通常结构是结构化的数据块 对象是可以执行某种任务的主权实体
  • 将中间件与 Golang Gorilla mux 子路由器结合使用

    如何将中间件应用到 Go 中大猩猩工具包 http www gorillatoolkit org 多路复用器子路由器 我有以下代码 router mux NewRouter StrictSlash true apiRouter router
  • 关于编写惯用的 Golang 的建议

    我正在掌握 Golang 的做事方式 首先是一些示例代码 package main import log os func logIt s string f os OpenFile errors log os O RDWR os O CREA
  • 结构中未初始化字段没有 Clang 警告

    考虑以下结构 typedef struct foo int a int b foo 我的编译器不会对以下语句发出警告 foo m 300 为什么没有发出警告 我预计会收到警告 因为我没有为结构的最终字段提供任何值 这是我的编译器调用 cla
  • 为什么 DER ASN.1 大整数的解组在 Golang 中仅限于 SEQUENCE?

    我希望能够使用encoding asn1 包从 DER 文件中解组一个大整数 但它看起来只适用于整数序列 例如 这不起作用 这很奇怪 因为 Big Int 的编组效果很好 https play golang org p Wkj0jAA6bp
  • 如何读取 UDP 连接直至超时?

    我需要读取 UDP 流量 直到超时 我可以通过在 UDPConn 上调用 SetDeadline 并循环直到出现 I O 超时错误来做到这一点 但这看起来很黑客 基于错误条件的流量控制 下面的代码片段看起来更正确 但并没有终止 在生产中 这
  • 如何通过在切片上查找来从切片复制到数组

    我正在编写一个库来处理二进制格式 我有一个带有数组变量的结构 我想保留它以用于文档目的 我还需要从输入字节片中查找和判断 一些伪代码 type foo struct boo 5 byte coo 3 byte func main input
  • C 指针混乱

    我想在内存中存储一 个字符串并稍后读取它 gt desc constant gt base id char malloc 200 sprintf gt desc constant gt base id f 1 printf gt s n g
  • 对嵌套结构使用自定义解组时,GoLang 结构无法正确解组

    我们需要对嵌套在多个其他结构中的结构使用自定义解组器 而这些结构不需要自定义解组器 我们有很多类似的结构B下面定义的结构 类似于嵌套A 代码的输出是true false 0 预期的true false 2 有任何想法吗 Go 游乐场示例he
  • 从其对象获取结构体字段的名称和类型

    例如 我有一个类似这样的结构 struct Test int i float f char ch 10 我有一个该结构的对象 例如 Test obj 现在 我想以编程方式获取字段名称和类型obj 是否可以 顺便说一句 这是 C 你正在要求C
  • 如何在结构或类向量中快速搜索具有特定值的对象?由 小码哥发布于

    如果向量中有数千个结构或类对象 如何快速找到所需的对象 例如 制作游戏 我需要最快的碰撞检测方法 每个图块都是一个结构体 矢量图中有很多图块 其值是 x和y 所以基本上我这样做 For i 0 i
  • 使用生成的 Golang DLL 返回字符串或 *C.Char

    我一直在努力追随z505 goDLL https github com z505 goDLL回购并遇到了一个大问题 该方法无法返回字符串 我无法读取结果的输出变量 这是我到目前为止使用的代码 Go 完整代码https play golang
  • pq:函数unnest(未知)不是唯一的

    以下代码工作正常 但我想将 array a b c d e 定义为变量 rows err db Query select colname from SELECT date unnest array a b c d e AS colname

随机推荐

  • Cocoa 应用程序内部的 Applescript

    对于我正在编写的应用程序 我需要访问一些其他应用程序的项目 Applescript 似乎是最好的方法 我一直在使用 Appscript 框架 它运行良好 因为它允许我对其进行线程化 并且当 Applescript 需要一段时间时不会使我的应
  • 给定编码中的字符无效

    XmlDocument oXmlDoc new XmlDocument try oXmlDoc Load filePath catch Exception ex Log Error Here try Encoding enc Encodin
  • Swift 中如何获取枚举值的名称?

    如果我有一个原始的枚举Integer values enum City Int case Melbourne 1 Chelyabinsk Bursa let city City Melbourne 我怎样才能转换city值到字符串Melbo
  • 有必要捕获“段错误”吗?

    我知道 如果有足够的背景 人们可能希望能够建设性地使用 即恢复 segfault健康 状况 但是 这样的努力值得吗 如果是 在什么情况下 你不能真正指望从段错误中恢复 您可以检测到它的发生 并在可能的情况下转储相关的特定于应用程序的状态 但
  • Predict_classes() 的函数式 API Keras 替代解决方案

    请参考here对于我之前的背景信息问题 按照answer建议来自纳西姆 本 我使用函数式 API 训练了双路径架构模型 现在我感到困惑 因为我需要预测每个像素的类别 这是相同的代码 imgs io imread test img astyp
  • 挂了还有问题吗?

    什么是 挂其他 问题 这个名字合适吗 我总是遵循 C 编码标准 忘了是哪一个 使用带有控制结构的括号 块 所以我不 通常会有这个问题 最后一个 其他属于 但为了理解可能出现的问题 外国代码如果能牢固地理解就好了 这个问题 我记得在一本关于
  • 在运行时更改 SetInterval 的间隔

    我编写了一个 JavaScript 函数 它使用 setInterval 每隔十分之一秒操作一个字符串 进行一定次数的迭代 function timer var section document getElementById txt val
  • 如何在Python 2中通过线程充分利用CPU核心

    下面的代码似乎是顺序执行的 而不是并发执行的 而且它只使用了一个CPU核心 有没有办法让它使用多个核心或在线程之间切换内容 我希望它能像java中的Thread类一样工作 import threading def work s for i
  • 如何在Java中检查2个日期是否在同一天

    我有 2 个日期变量 Date1 和 Date2 我想检查日期 1 是否与日期 2 属于同一日期 但允许它们有不同的时间 我该怎么做呢 这看起来是一件很容易做的事情 但我却很困难 编辑 我想避免外部库和东西 编辑 我最初的想法是删除小时 分
  • 运行 sonarrunner 时未找到类错误

    我收到类未找到错误 该类无法通过类加载器访问 并且从 gradle 运行 sonarrunner 时会提示错误 这些类作为依赖项包含在 gradle 的编译时 并且 gradle 构建工作正常 如何为声纳包含这些类 14 53 24 322
  • 如何处理多个xml标准? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我正在尝试将一组本地包装类写入我们的机构 API 我在一所高等教育机构工作 这些
  • Android 无法加载本地 libcrypto 未满足的链接错误

    我需要在我的应用程序中运行比操作系统中版本更新的 openssl 版本 我能够修补和 Android 源代码以编译较新的版本 然后提取共享库以在我的应用程序中使用 然后 我能够编译并链接我的本机代码 该代码仅需要较新版本的 openssl
  • 部署具有所有包依赖项的 Python Cloud Function

    我想部署一个不依赖于使用 requests txt 来安装软件包的云功能 我希望这些包可以在存储中使用 或者作为功能的一部分进行压缩和上传 这可能吗 编辑 2019 年 6 月 14 日 基本上我想用我的代码发送 numpy 和 panda
  • 使用 Node.js 在 html 表中显示 mysql

    我正在学习如何将node js 与mysql 一起使用 我试图找到一些好的文档 但徒劳无功 我现在可以在浏览器中显示 mysql 数据 但我想在某个时候通过我的 index html 和 css 文件来处理它 这是我的 app js mod
  • 如何在 iframe 的本地范围内执行注入的 javascript 代码?

    我在 iframe 中加载了一个 html 文档 我已经用 javascript 为该文档开发了一些弹出菜单代码 并将代码从主文档注入到 iframe 中 但我的代码在 iframe 中不起作用 因为它使用了 document 对象 令人惊
  • 如何覆盖 UISearchDisplayController searchResult TableView 中的“无结果”文本?

    我不想在我的服务器处理搜索查询时显示 无结果 文本 我找出了包含标签的表格单元格的确切坐标 并尝试覆盖它 self noResultsCoverView UIView alloc initWithFrame CGRectMake 0 0 4
  • DocumentFilter 的正则表达式可以匹配所有十进制数字,也可以匹配末尾只有一个小数的数字

    先问问题 我需要正则表达式来匹配111 or 111 or 111 111 只是任意数字 DocumentFilter 我需要用户能够输入111 with a decimal之后什么也没有 似乎无法正确处理 我发现所有正则表达式都匹配all
  • 正则表达式中间的前瞻不匹配

    我有一根绳子 s1 a b 我想匹配这个字符串但只捕获字母 我尝试使用前瞻 if s1 a z a z print Captured 1 2 n 但这似乎与我的字符串不匹配 我已经通过使用解决了原来的问题 相反 但我很好奇为什么我最初的尝试
  • 如何将在Python中创建/更新的Google工作表保存到特定文件夹?

    我有这个代码 from google colab import auth auth authenticate user import gspread from oauth2client client import GoogleCredent
  • 如果struct A嵌入到B中,A上的方法可以访问B的方法和字段吗?

    struct A func a A BName id int string return a Name struct B A Name string func main b B Name abc fmt Println b Name 代码失