Golang函数返回字符串时遇到的问题如何解决
Golang函数返回字符串时遇到的问题如何解决 你好,
我是 Go 语言的初学者,遇到了以下问题。
如果我将以下函数保留在 main.go 文件中,它可以正常工作:
func GetCWD() string {
dir, _ := os.Getwd()
return dir
}
但当我将它移到另一个文件 recover/recover.go 中,并在 main.go 中导入后,main.go 中的打印函数 fmt.Println(recover.GetCWD) 会显示:0x4a00f0,而不是字符串。
我尝试使用 fmt.Printf("%s", recover.GetCWD),但可能我遗漏了什么?
致意。
更多关于Golang函数返回字符串时遇到的问题如何解决的实战教程也可以访问 https://www.itying.com/category-94-b0.html
3 回复
尝试调用函数:recover.GetCWD()。
更多关于Golang函数返回字符串时遇到的问题如何解决的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
这样就可以了 😉
test := recover.GetCWD()
tmt.Println(test)
问题在于你在调用 recover.GetCWD 时没有加上括号 (),导致打印的是函数的内存地址而不是函数的返回值。
在Go语言中,函数名不加括号表示引用函数本身(函数值),加上括号才是实际调用函数。
正确的调用方式:
// main.go
package main
import (
"fmt"
"yourmodule/recover"
)
func main() {
// 正确:加上括号调用函数
fmt.Println(recover.GetCWD())
// 或者使用Printf
fmt.Printf("%s\n", recover.GetCWD())
}
完整的文件结构示例:
// recover/recover.go
package recover
import "os"
func GetCWD() string {
dir, _ := os.Getwd()
return dir
}
// main.go
package main
import (
"fmt"
"yourmodule/recover"
)
func main() {
// 这些都会正确工作
fmt.Println(recover.GetCWD())
fmt.Printf("当前目录: %s\n", recover.GetCWD())
// 或者先赋值给变量
currentDir := recover.GetCWD()
fmt.Println("目录:", currentDir)
}
错误示例(你遇到的问题):
// 错误:打印函数地址 0x4a00f0
fmt.Println(recover.GetCWD)
// 错误:同样打印函数地址
fmt.Printf("%s", recover.GetCWD)
记住在Go语言中调用函数时必须要加上括号,即使函数没有参数。

