请教一个 golang 中 reflect 的问题, 琢磨了一下午了

2020-11-02 22:54:05 +08:00
 Vibra
package main

import (
    "fmt"
    "reflect"
)

type arrT struct {
    Arr []int
}


func main() {
	tt := arrT{
		Arr: []int{1, 2},
	}

	arrValue := reflect.ValueOf(&tt).Elem().FieldByName("Arr")
	fmt.Printf("%v, %T\n", arrValue, arrValue)

	aValue := arrValue.Elem()
	aValue.Set(reflect.Append(aValue, reflect.ValueOf(80)))
	// panic: reflect: call of reflect.Value.Elem on slice Value

    fmt.Println("Slice after appending data:", tt)
}

如代码所示

一个结构体中有一个 split 我想在里面添加一些东西, 但是一直报错, 怎样才能顺利添加进去呢?

2172 次点击
所在节点    程序员
21 条回复
no1xsyzy
2020-11-03 22:24:27 +08:00
@impl 我感觉你纯粹是不会说话,或者心态崩了
“我建议先考虑不用 reflect 解决问题。另外,楼主可以把原本的问题问出来,以避免这是个潜在的 X-Y 问题”
这是否正确表达了你的意图?同时,这样一段话又能显得说话人温和谦虚且博学。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/721175

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX