go 获取命令行传参值
时间: 2023-08-07 16:04:21 浏览: 45
在Go语言中,可以通过索引获取Args变量中对应的值来获取命令行传递的参数值。例如,假设我们要获取第二个参数的值,可以使用以下代码:
```
package main
import (
"fmt"
"os"
)
func main() {
args := os.Args
if len(args) > 1 {
arg2 := args[1]
fmt.Println("第二个参数的值是:", arg2)
}
}
```
如果执行 `go run main.go arg1 arg2`,则输出为 `第二个参数的值是: arg2`。
注意,获取的参数值都是字符串类型,如果需要将其转换为其他类型,需要使用相应的转换函数,例如strconv包中的Atoi函数可以将字符串转换为整数。
相关问题
go 语言获取redis geo格式的坐标值
在 Go 语言中,你可以使用 go-redis 库来操作 Redis 数据库。如果你想获取 Redis 中一个元素的坐标值,可以使用该库提供的 GeoPos 方法。
具体来说,GeoPos 方法的语法如下:
```go
func (c *Client) GeoPos(key string, members ...string) *StringSliceCmd
```
其中,key 是指定的地理位置集合的名称,members 是指定的元素名称。如果要获取多个元素的坐标值,可以在 members 参数后面加上更多的 string 类型参数,以逗号分隔。
例如,如果你想获取名为 "locations" 的地理位置集合中名为 "New York" 的元素的坐标值,可以使用以下代码:
```go
results, err := rdb.GeoPos("locations", "New York").Result()
if err != nil {
fmt.Println("GeoPos error", err)
return
}
if len(results) > 0 {
longitude := results[0][0]
latitude := results[0][1]
fmt.Println("Longitude:", longitude)
fmt.Println("Latitude:", latitude)
}
```
这里的 GeoPos 方法返回一个 StringSliceCmd 类型的对象,你可以通过调用该对象的 Result 方法来获取结果,结果是一个包含多个坐标值的二维数组。在这个例子中,我们只获取了一个元素的坐标值,因此结果数组中只有一个元素,我们可以直接获取该元素的经度和纬度值。
go 反射获取ptr对应的值
可以使用反射包中的ValueOf函数获取一个值的反射对象,然后通过调用Elem()方法获取指针指向的值的反射对象,最后通过调用Interface()方法获取该值的接口类型。示例如下:
```go
package main
import (
"fmt"
"reflect"
)
func main() {
var x int = 10
ptr := &x
fmt.Println(reflect.ValueOf(ptr).Elem().Interface())
}
```
输出结果为:
```
10
```
在这个示例中,我们定义了一个整数变量`x`,然后定义了一个指向`x`的指针`ptr`,接着使用`reflect.ValueOf(ptr)`获取`ptr`的反射对象,再使用`Elem()`方法获取指针指向的值的反射对象,最后使用`Interface()`方法获取该值的接口类型,这里就是`int`类型的`10`。