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语言中调用函数时必须要加上括号,即使函数没有参数。

回到顶部