gpt4 book ai didi

pointers - 如何在GO中获取指向接口(interface)的指针

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

我想去掉下面代码中的变量 temp:

type myinterface interface {
f1()
}

type a struct {
val int
}

type b struct {
mi *myinterface
}

func (a) f1() {

}

func demo() {

a1 := a{3}
var temp myinterface = a1
b1 := b{&temp}
fmt.Println(b1)

但是如果我试着写

b1 := b{&myinterface(a1)}

我收到消息

cannot take the address of myinterface(a1) ( undefined )

正确的做法是什么?

更新:

我没有指向接口(interface)的指针,因为接口(interface)可以包含结构或指向结构的指针,这个问题中也有详细说明:

"<type> is pointer to interface, not interface" confusion

最佳答案

如果这就是您要找的,请告诉我: https://play.golang.org/p/ZGRyIqN7bPR

完整代码:

package main

import (
"fmt"
)

type myinterface interface {
f1()
}

type a struct {
val int
}

type b struct {
mi myinterface
}

func (a) f1() {}


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

a1 := &a{3}
b1 := b{a1}
fmt.Println(b1)
}

您几乎永远不需要指向接口(interface)的指针,因为接口(interface)本身就是指针。所以只需将结构 b 更改为:

 type b struct {
mi myinterface
}

关于pointers - 如何在GO中获取指向接口(interface)的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54670125/

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