当前位置: 首页 > 面试题库 >

结构变量未更新

于鹏
2023-03-14
问题内容

我在测试代码中有一个数组

arr := []Server{}

要求arr [0] .GetId()

服务器是接口。ServerInstance是实现接口方法的结构,即

func (serv ServerInstance) GetId() int {
    return serv.Id
}

我有一个像

func (serv *ServerInstance) someFunc

这正在更新结构的变量“ Id”。我确定值会更新为-

serv.Id=23445

但这并没有反映在第3行的通话中

_*_更新*

for somecondition {
     arr=append(arr,FuncReturningServerIntercae() // calling this invokes goroutine which keeps updating `Id` very frequently
}


for {
   for _,s := range arr {
        print s.GetId()   // ** No Update **
     }
    sleep(some duration)
}

范例
http://play.golang.org/p/zUqJ0hEjxv


问题答案:

您在添加结构时将其复制,而不是在示例中放置指向结构本身的指针。http://play.golang.org/p/rQz9RLTzMU-
是否
可以正常使用?进一步的信息:Golang是一种按值传递的语言,因此,如果您使用goroutines并希望保持数据的安全性,最好使用指针。



 类似资料:
  • 问题内容: http://play.golang.org/p/wYgfLLQYdm 请参阅上面的示例。在我的示例中,方法执行后变量更改不会持续。如何使用struct方法更改struct变量的值? 问题答案: 您的方法接收者是一个值,而不是一个指针。 那意味着那些方法像操作对象的 副本 。 也可以看看: 常见问题“ 我应该在值或指针上定义方法吗? ”。 “ 在Golang中不要被指针与非指针方法接收

  • 问题内容: 我是Python和程序设计的新手,但似乎无法理解为什么此函数不更新全局变量 我也尝试过 问题答案: 需要声明的是是全球性的 内部 ,而不是外面。 该语句告诉Python,在函数范围内,它引用的是全局变量,而不是一些新的局部变量。

  • 问题内容: 我定义了一个范围变量。加载视图时,我从数据库加载字符串并将其设置为。然后,我在正在使用的texteditor(Froala)上进行填充。 下面是该视图的代码: 所以基本上我将texteditor 设置为ng- model。因此,当我对文本编辑器进行更改时,它会修改值。 我发现这很奇怪的一件事是,当我在texteditor中修改文本时,它在div内发生了变化。但是,它不会在div之外更新

  • 问题内容: 我正在尝试遵循此示例Hyperledger Fabric代码:https : //github.com/hyperledger/education/tree/master/LFS171x/fabric- material 最初,我用go文件chaincode / tuna-app / test.go替换了chaincode / tuna-app / tuna- chaincode.go

  • 这个结构有一些问题,我也不喜欢它。-这样合适吗?-我如何使用EC2的结果-创建角色,我想部署代码到服务器,这是刚刚创建的,我不知道ID。-还有其他方法可以将参数传递给角色吗?

  • 2、结构类型变量的定义 在定义某个结构类型后,程序员就可以说明该结构类型的内存变量。它的说明形式与前面介绍的简单数据类型的变量说明基本上一致。其定义格式如下: [变量名] 结构名 <[字段值表]>