我对Go编程语言相当不熟悉,而且我一直试图找到一种方法来将变量的类型作为字符串。到目前为止,我还没有找到任何有用的东西。我尝试使用typeof(variableName)
获取变量的类型作为字符串,但这似乎没有效果。
Go是否有任何内置运算符可以将变量的类型作为字符串获取,类似于JavaScript的typeof
运算符或Python的type
运算符?
//Trying to print a variable's type as a string:
package main
import "fmt"
func main() {
num := 3
fmt.Println(typeof(num))
//I expected this to print "int", but typeof appears to be an invalid function name.
}
答案 0 :(得分:14)
如果您只想打印该类型:fmt.Printf("%T", num)
将起作用。 http://play.golang.org/p/vRC2aahE2m
答案 1 :(得分:13)
package main
import "fmt"
import "reflect"
func main() {
num := 3
fmt.Println(reflect.TypeOf(num))
}
输出:
int
更新:您更新了问题,指定您希望将类型作为字符串。 TypeOf
返回Type
,其Name
方法将类型作为字符串返回。所以
typeStr := reflect.TypeOf(num).Name()
更新2 :为了更加彻底,我应该指出您可以在Name()
上拨打String()
或Type
之间做出选择;它们有时是不同的:
// Name returns the type's name within its package.
// It returns an empty string for unnamed types.
Name() string
与
// String returns a string representation of the type.
// The string representation may use shortened package names
// (e.g., base64 instead of "encoding/base64") and is not
// guaranteed to be unique among types. To test for equality,
// compare the Types directly.
String() string