⚙️在Go中转换接口为字符串

111 阅读1分钟

要在Go中把接口转换为字符串,可以使用 fmt.Sprint函数,它可以得到任何值的默认字符串表示。如果你想用非默认的格式来格式化一个接口,使用 fmt.Sprintf%v动词。

fmt.Sprint(val)相当于 fmt.Sprintf("%v", val)

package main
import "fmt"
var testValues = []interface{}{
"test",
2,
3.2,
[]int{1, 2, 3, 4, 5},
struct {
A string
B int
}{
A: "A",
B: 5,
},
}
func main() {
// method 1
fmt.Println("METHOD 1")
for _, v := range testValues {
valStr := fmt.Sprint(v)
fmt.Println(valStr)
}
// method 2
fmt.Printf("\nMETHOD 2\n")
for _, v := range testValues {
valStr := fmt.Sprintf("value: %v", v)
fmt.Println(valStr)
}
}

输出。

METHOD 1
test
2
3.2
[1 2 3 4 5]
{A 5}
METHOD 2
value: test
value: 2
value: 3.2
value: [1 2 3 4 5]
value: {A 5}

另外,您可以使用 %+v动词来将字段名添加到结构表示中。

test
2
3.2
[1 2 3 4 5]
{A:A B:5}

或使用 %#v以Go-syntax风格格式化值。

"test"
2
3.2
[]int{1, 2, 3, 4, 5}
struct { A string; B int }{A:"A", B:5}