相关疑难解决方法(0)

如何在Go中使用文字*int64?

我有一个带*int64字段的结构类型.

type SomeType struct {
    SomeField *int64
}
Run Code Online (Sandbox Code Playgroud)

在我的代码中的某个时刻,我想声明一个这样的文字(比如,当我知道所述值应为0,或者指向0时,你知道我的意思)

instance := SomeType{
    SomeField: &0,
}
Run Code Online (Sandbox Code Playgroud)

...除了这不起作用

./main.go:xx: cannot use &0 (type *int) as type *int64 in field value
Run Code Online (Sandbox Code Playgroud)

所以我试试这个

instance := SomeType{
    SomeField: &int64(0),
}
Run Code Online (Sandbox Code Playgroud)

......但这也行不通

./main.go:xx: cannot take the address of int64(0)
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?我能想出的唯一解决方案是使用占位符变量

var placeholder int64
placeholder = 0

instance := SomeType{
    SomeField: &placeholder,
}
Run Code Online (Sandbox Code Playgroud)

注意:当它是*int而不是a时,&0语法工作正常*int64.编辑:不,不.为此表示歉意.

编辑:

显然,我的问题含糊不清.我正在寻找一种方法来说明一个*int64.这可以在构造函数中使用,或者用于表示文字结构值,或者甚至作为其他函数的参数.但帮助函数或使用不同的类型不是我正在寻找的解决方案.

struct pointers literals go

79
推荐指数
3
解决办法
4万
查看次数

在结构中引用布尔值以进行赋值

type MyStruct struct {

    IsEnabled *bool
}
Run Code Online (Sandbox Code Playgroud)

如何更改*IsEnabled = true的值

这些都不起作用:

*(MyStruct.IsEnabled) = true
*MyStruct.IsEnabled = true
MyStruct.*IsEnabled = true
Run Code Online (Sandbox Code Playgroud)

go

2
推荐指数
1
解决办法
2214
查看次数

go 中将 bool 转换为 *bool

使用以下代码:

var example *bool
example = true
log.Print(example)
Run Code Online (Sandbox Code Playgroud)

我有以下错误cannot convert true (untyped bool constant) to *bool

我设法通过声明一个新变量来解决它truevalue

var example *bool
truevalue := true
example = &truevalue
log.Print(example)
Run Code Online (Sandbox Code Playgroud)

但我想有一种更好的方法可以做到这一点,而无需声明任何新变量。

go

0
推荐指数
1
解决办法
7359
查看次数

标签 统计

go ×3

literals ×1

pointers ×1

struct ×1