这是在Google Golang的Nuts上看到的 golang-nuts

当作为interface类型调用时,指针值没有更新?


func f(resp interface{}) {
	resp = "abcd"
}

func main() {
	var s string
	f(&s)
	fmt.Println(s) //prints blank?
}

interface只是一个值,想要间接成指针,可以如下处理:

package main

import (
	"fmt"
)

func f(resp interface{}) {
	*resp.(*string) = "abcd"
}

func main() {
	var s string
	f(&s)
	fmt.Println(s)
}

resp.(*string):转换为string指针 *resp.(*string):这个表示指针的内容 *resp.(*string) = "abcd":将abcd的值赋给指针的内容.