Pointers Golang指向值的指针字符串
我正在使用一些代码标志来管理程序或服务。今天我遇到了一个问题,我想使用这种声明:Pointers Golang指向值的指针字符串,pointers,go,flags,Pointers,Go,Flags,我正在使用一些代码标志来管理程序或服务。今天我遇到了一个问题,我想使用这种声明: var port = flag.String("port", "", "port") 它返回一个*string类型变量,我无法将其转换为string。 我是如何处理这个问题的: r.Run(":" + *port) 这是可行的,但最好的做法是什么?我的意思是,有很多函数正在等待字符串作为参数,在这种情况下,我无法处理这个问题 您的端口变量的类型为*string(这是返回的内容)。要获取类型为string的值,除
var port = flag.String("port", "", "port")
它返回一个*string
类型变量,我无法将其转换为string
。
我是如何处理这个问题的:
r.Run(":" + *port)
这是可行的,但最好的做法是什么?我的意思是,有很多函数正在等待字符串作为参数,在这种情况下,我无法处理这个问题 您的
端口
变量的类型为*string
(这是返回的内容)。要获取类型为string
的值,除了取消引用之外没有其他方法:*端口
您可以在需要将其作为字符串传递的每个位置执行此操作,也可以使用:
在这种情况下,端口
变量的类型为字符串
,因此不需要解引用。在这里,您显式地为要使用的标志包提供*字符串值:类型为字符串的变量的地址,当然类型为*字符串(因此标志包将能够修改/设置所指的值)。flag.String()
是一个方便的函数,它分配一个String
值并返回指向它的指针
另一个选项是取消对它的引用一次,并将字符串
值存储在另一个字符串
类型的变量中,例如:
var portp = flag.String("port", "", "port")
var port string
func main() {
flag.Parse()
port = *portp
// Now you can use port which is of type string
}
但是我更喜欢flag.StringVar()
解决方案
请注意,无论端口是一个数字,您最好使用或:
您的端口
变量的类型为*string
(这是返回的内容)。要获取类型为string
的值,除了取消引用之外没有其他方法:*端口
您可以在需要将其作为字符串传递的每个位置执行此操作,也可以使用:
在这种情况下,端口
变量的类型为字符串
,因此不需要解引用。在这里,您显式地为要使用的标志包提供*字符串值:类型为字符串的变量的地址,当然类型为*字符串(因此标志包将能够修改/设置所指的值)。flag.String()
是一个方便的函数,它分配一个String
值并返回指向它的指针
另一个选项是取消对它的引用一次,并将字符串
值存储在另一个字符串
类型的变量中,例如:
var portp = flag.String("port", "", "port")
var port string
func main() {
flag.Parse()
port = *portp
// Now you can use port which is of type string
}
但是我更喜欢flag.StringVar()
解决方案
请注意,无论端口是一个数字,您最好使用或:
您应该能够按原样使用它,或者将其转换为字符串
package main
import "fmt"
import "flag"
func main () {
var port = flag.String("port", "", "port")
flag.Parse()
test(*port)
newstring := *port
test(newstring)
}
func test (s string) {
fmt.Println(s)
}
您应该能够按原样使用它,或者将其转换为字符串
package main
import "fmt"
import "flag"
func main () {
var port = flag.String("port", "", "port")
flag.Parse()
test(*port)
newstring := *port
test(newstring)
}
func test (s string) {
fmt.Println(s)
}
标志
包函数返回的任何内容都是指针,因为它需要在“幕后”进行修改。不过,您最好使用flag.Int
,因为您当前正等待有人使用“-flag crashy”调用您的程序,这很可能会引起恐慌。那么,请使用flag.StringVar
。有时阅读包文档确实有帮助。包函数返回的任何内容都是指针,因为它需要在“幕后”进行修改。不过,您最好使用flag.Int
,因为您当前正等待有人使用“-flag crashy”调用您的程序,这很可能会引起恐慌。那么,请使用flag.StringVar
。有时阅读软件包文档确实有帮助。