arrays - GoLang 字符串为空

标签 arrays string go

以下是我的代码;

我将 Field 和 Values 传递给一个名为 insert() 的方法,其中值填充在字符串数组 Fields[]Values[] 中 分别。 字符串数组变量 Fields[]Values[] 被填充到 insert() 中。但是当我在 main 方法中打印相同的内容时,它们是空的。 我希望保留这些值。

我如何实现这一点? 请告诉我。

谢谢

代码:

package main

import (
    "fmt"
    "strings"
    "strconv"
)

var Field string = "text,text,text,text"
var Value string = "1,2,3,4"
var num int = 4
var Fields[]  string
var Values[]  string


func main() {

    insert(Field, Value)


    fmt.Println("Fields from main():", Fields)
    fmt.Println("Values from main():", Values)



}

func insert(Field string, Value string){
    if Field != "" && Value != "" {
        c := 0
                Fields := make([]string, num)
                Values := make([]string, num)

        field := strings.Split(Field, ",")
        value := strings.Split(Value, ",")

        for i := range field {
            Fields[c] = field[i]
            c = c + 1
                }
                c = 0
                for j := range value {
                        Values[c] = value[j]
            c = c + 1
                }

        fmt.Println("Fields from insert():", Fields)
        fmt.Println("Values from insert():", Values)

        }   
}

输出如下;

Fields from insert(): [text text text text]
Values from insert(): [1 2 3 4]
Fields from main(): []
Values from main(): []

最佳答案

insert 中你有:

            Fields := make([]string, num)
            Values := make([]string, num)

这定义了两个新的局部变量,它们“遮蔽”了全局变量。请记住,:= 在一个操作中定义和分配一个变量。要获得您想要的行为,只需分配给您的全局变量而不是重新定义它们:

            Fields = make([]string, num)
            Values = make([]string, num)

关于arrays - GoLang 字符串为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51974735/

相关文章:

swift - 字符无法转换为字符串

java - java中输入1000000000个数组

php - 如何将两个值合并/合并到同一个数组中的单个键中

arrays - 传递字符串数组和foreach循环不起作用:没有数组,只有一个字符串?

C 连接字符串不起作用

Java 字符串到对象列表

Gomobile 绑定(bind)委托(delegate)/回调行为

匹配没有小写字母且至少有一个大写字母的正则表达式?

go - 如何覆盖 go 模块中的依赖项?

ruby - 从 Ruby 中的哈希中删除重复项