gpt4 book ai didi

pointers - Golang 通过引用结构成员值传递变量

转载 作者:IT王子 更新时间:2023-10-29 01:18:21 25 4
gpt4 key购买 nike

我在通过引用或传递指针将值传递给结构时遇到困难。我将概述我要实现的目标:

type FooStruct struct {
foo1, foo2, foo3 int //etc
connection *net.Conn
}

func(session FooStruct) Run(conn *net.Conn) {
session.connection = conn
session.connection.RemoteAddr()
......
}

func main() {
server, err := net.Listen("tcp", ":8484")
connection, err := server.Accept()
foo := FooStruct{}
foo.Run(&connection)
}

以上是我试图实现的示例,我只想将引用指针传递给结构中的连接变量。我曾尝试阅读文档并浏览教程,但我感到很困惑。

编译时出现错误 - session.connection.RemoteAddr 未定义(类型 * net.Conn 没有字段或方法 RemoteAddr)。它确实有那种方法,就像复制它工作正常的变量时一样。然而,这不是我想要做的。

最佳答案

因为net.Conn是一个接口(interface),而不是一个结构体,你应该直接传递和存储它。像这样:

type FooStruct struct {
foo1, foo2, foo3 int
connection net.Conn
}

func(session *FooStruct) Run(conn net.Conn) {
session.connection = conn
session.connection.RemoteAddr()
}

func main() {
server, err := net.Listen("tcp", ":8484")
connection, err := server.Accept()
foo := FooStruct{}
foo.Run(connection)
}

另请参阅 passing interfaces to pointers 上的 Go FAQ 条目.

另请注意,我将 Run 方法的接收者更改为指针,which is generally what you want .

关于pointers - Golang 通过引用结构成员值传递变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23964100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com