gpt4 book ai didi

go - if 语句中的变量范围

转载 作者:IT老高 更新时间:2023-10-28 13:07:19 29 4
gpt4 key购买 nike

我今天刚开始学习 Go,但被变量范围卡住了。

我最终对如何解决我无法在 if 语句中创建变量并在之后使用它的事实感到困惑。

这是我的代码。问题是 new1 不能在 if 语句之前创建,因为它的大小取决于 if 语句的结果,并且通过在 if 语句中创建它,我不能在 if 语句结束后使用它。

if len(array1)>len(array2) {
new1 := make([]string,0,len(array1))
mc := Array2Map_string(array1)
for _,tok :=range array2 {
_, ok := mc[tok]
if ok {
new1[len(new1)]=tok
}
}
} else {
new1 := make([]string,0,len(array2))
mc := Array2Map_string(array2)
for _,tok :=range array1 {
_, ok := mc[tok]
if ok {
new1[len(new1)]=tok
}
}
}
new2 := make([]string,0,len(new1))
copy(new2, new1)

我唯一能想到的就是做类似的事情

var pointlessvariable uint
if len(array1)>len(array2) {
pointlessvariable=len(array1)
} else {
pointlessvariable=len(array2)
}
var new1 = make([]string,0,pointlessvariable)
if len(array1)>len(array2) {
...

说实话,如果这真的是解决方案,那么我认为我毕竟不想使用 Golang。

那么解决这个问题的最佳方法是什么?

最佳答案

您可以在 if block 之前声明 new1 并在里面使用 make:

var new1 []string

if len(array1)>len(array2) {
new1 = make([]string, 0, len(array1))
// instructions ...
} else {
new1 = make([]string, 0, len(array2))
// other instructions ...
}

new2 := make([]string, 0, len(new1))
copy(new2, new1)

关于go - if 语句中的变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24475153/

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