Golang中如何将变量传递到另一个函数

Golang中如何将变量传递到另一个函数 抱歉,这是个新手问题…

我有一个全局变量

proxy []string

和函数

func check(pr proxy??) { // 如何正确指定全局变量,使其能够传递给函数

var proxystr = strings.Split(":", proxy)

}

如何将变量 proxy 传递给 check 函数?

5 回复

你不需要传递变量,直接使用它即可。

更多关于Golang中如何将变量传递到另一个函数的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


你好,感谢你的回答。但我该如何传递的不是变量的值而是变量本身?这就是我的困难所在。

所有全局变量在同一个包内的任何地方都是可用的。唯一的例外是它们被同名的局部变量所遮蔽。如果一个全局变量是导出的(以大写字母开头),那么它在所有导入该包的包中也是可见的。

func main() {
    fmt.Println("hello world")
}

以下链接提供了您所需功能的两种不同实现示例。第一种是将切片作为参数传入函数的情况,第二种是通过结构体定义并将函数作为方法使用的方案。

无论采用哪种方式,建议遵循严格的变量作用域规范,以避免代码混乱和逻辑重叠。祝您编程顺利。

变量作为参数传递:
https://goplay.space/#5F5eSevTRw7

使用结构体与方法方案:
https://goplay.space/#VfWC0yMIQjP

在Go语言中,你可以通过参数传递的方式将全局变量传递给函数。根据你的代码片段,这里有两种常见的方法:

方法1:直接传递切片

var proxy []string

func check(pr []string) {
    // 使用传递的切片参数
    if len(pr) > 0 {
        var proxystr = strings.Split(pr[0], ":")
        // 处理 proxystr
    }
}

// 调用方式
check(proxy)

方法2:传递切片引用(如果需要修改原切片)

var proxy []string

func check(pr *[]string) {
    // 通过指针访问和修改原切片
    if pr != nil && len(*pr) > 0 {
        var proxystr = strings.Split((*pr)[0], ":")
        // 处理 proxystr
        
        // 如果需要修改原切片
        // *pr = append(*pr, "new element")
    }
}

// 调用方式
check(&proxy)

完整示例

package main

import (
    "fmt"
    "strings"
)

var proxy = []string{"192.168.1.1:8080", "192.168.1.2:9090"}

func check(pr []string) {
    for i, p := range pr {
        parts := strings.Split(p, ":")
        if len(parts) == 2 {
            fmt.Printf("Proxy %d - IP: %s, Port: %s\n", i, parts[0], parts[1])
        }
    }
}

func main() {
    check(proxy)
}

在你的具体代码中,应该使用第一种方法,因为strings.Split操作不会修改原切片,只需要读取切片内容。

回到顶部