golang은 반사를 이용하여 구조체 변수의 값을 설정합니다
package main
import (
"fmt"
"reflect"
)
// Person
type Person struct {
Name string
Age int
}
func main() {
person := Person{}
fmt.Println(person) // { 0}
pp := reflect.ValueOf(&person) // struct
field := pp.Elem().FieldByName("Name") // Field
field.SetString("gerrylon") //
field = pp.Elem().FieldByName("Age")
field.SetInt(26)
fmt.Println(person) // {gerrylon 26}
}
사실상 원시값도 마찬가지다. 바늘을 이용해야 한다. 왜냐하면 골뱅이는 기본적으로 전가이기 때문이다. 예는 다음과 같다.
var f float64 = 3.4
fmt.Println(f) // 3.4
p := reflect.ValueOf(&f) // , ValueOf f
v := p.Elem()
v.SetFloat(3.5)
fmt.Println(f) // 3.5
요약:
FieldByName()
방법을 이용하여struct의 지정한 키의 값을 설정할 수 있어 매우 강력하다.보충 지적을 환영합니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
golang의 시간대와 신기한 시간.Parse상기 코드의 테스트 결과에서 몇 가지를 얻을 수 있다. time.Now에서 얻은 현재 시간의 시간대는 컴퓨터의 현재 시간대와 같다. time.Parse는 시간 문자열을 Time으로 변환합니다. Time 변수가 어떤 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.