Go 插入调用方法并插入值

Go 插入调用方法并插入值,go,Go,我用另一种编程语言来实现这一点,创建一个url来反向地理编码一个位置。我是新手,我正在慢慢地准备剧本 我有两个变量x&y的方法Geofunction(x,y) 我从另一个方法调用上述方法,并将值提供给变量 我就是不能让它像预期的那样工作 有人能告诉我在哪里可以找到答案吗请在这方面给我一些帮助 我有一个Python的工作助手,当我学习Go时,我正在翻译脚本 我做了一些更改,以允许其他函数访问某些变量。我需要了解使用调用的方法是否能够访问变量值 package main import "fmt"

我用另一种编程语言来实现这一点,创建一个url来反向地理编码一个位置。我是新手,我正在慢慢地准备剧本

我有两个变量x&y的方法Geofunction(x,y) 我从另一个方法调用上述方法,并将值提供给变量

我就是不能让它像预期的那样工作

有人能告诉我在哪里可以找到答案吗请在这方面给我一些帮助

我有一个Python的工作助手,当我学习Go时,我正在翻译脚本

我做了一些更改,以允许其他函数访问某些变量。我需要了解使用调用的方法是否能够访问变量值

package main

import "fmt"

var Location1x, Location1y string
var Location1 string
var rev_geo string

func Geofunction(x, y) {
    var str1 string = "https://eu1.locationiq.com/v1/reverse.php?key="
    var str2 string = "**********************"  //API Key
    var str3 string = x // '48.853106'
    var str4 string = "&lon="
    var str5 string = y // '2.384202'
    var str6 string = "&format=json"
    var rev_geo string = str1 + str2 + str3 + str4 + str5 + str6

    return rev_geo
}

func Locator() {
    Location1x, Location1y = "48.853106", "2.384202"
    Location1 = Geofunction(Location1x, Location1y)
}

func main() {
    Locator()
    fmt.Println(Location1)
}```

Expected:
A string of a URL is printed.

The three errors are: 
main.go:9:18: undefined: x
main.go:9:21: undefined: y
Geofunction(Location1x, Location1y) used as value


Once I get the above sorted, I will then reuse the method to produce multiple strings in an API test that confirms specific data in the json files returned from the server

你少了几块

  • 函数定义中的
    x
    y
    类型缺失。由于两者都是
    字符串
    s,因此可以同时定义类型
  • 函数
    GeoFunction
    缺少返回类型,返回类型应为
    string
  • Go在语法和结构方面非常严格,不像Python——我强烈建议在传输任何代码之前完成,它会让事情变得更加流畅

    尝试以下方法:

    package main
    
    import (
        "fmt"
    )
    
    var Location1x, Location1y string
    var Location1 string
    var rev_geo string
    
    func Geofunction(x, y string) string {
        var str1 string = "https://eu1.locationiq.com/v1/reverse.php?key="
        var str2 string = "**********************"  //API Key
        var str3 string = x // '48.853106'
        var str4 string = "&lon="
        var str5 string = y // '2.384202'
        var str6 string = "&format=json"
        var rev_geo string = str1 + str2 + str3 + str4 + str5 + str6
    
        return rev_geo
    }
    
    func Locator() {
        Location1x, Location1y = "48.853106", "2.384202"
        Location1 = Geofunction(Location1x, Location1y)
    }
    
    func main() {
        Locator()
        fmt.Println(Location1)
    }
    

    您的方法定义在这里是错误的,因为go是一种静态类型的语言,所以您的函数定义应该具有参数的类型,它与参数名一起使用

    package main
    
    import "fmt"
    
    var Location1x, Location1y string
    var Location1 string
    var rev_geo string
    
    func Geofunction(x string, y string) {
    var str1 string = "https://eu1.locationiq.com/v1/reverse.php?key="
    var str2 string = "**********************"  //API Key
    var str3 string = x // '48.853106'
    var str4 string = "&lon="
    var str5 string = y // '2.384202'
    var str6 string = "&format=json"
    var rev_geo string = str1 + str2 + str3 + str4 + str5 + str6
    
    return rev_geo
    }
    
    func Locator() {
    Location1x, Location1y = "48.853106", "2.384202"
    Location1 = Geofunction(Location1x, Location1y)
    }
    
    func main() {
    Locator()
    fmt.Println(Location1)
    }
    

    这基本上是可行的,但更好的方法是使用字符串生成器,而不是附加字符串。这样效率更高

    谢谢@Ragav Sood这就解决了我在将Geofunction视为一个值并打印url时遇到的问题。这就解决了我的这部分问题。一旦我有了一个完整的运行脚本,我会考虑用字符串生成器替换它,因为我的名声还不到15岁。我看不到你的选票