golang은 반사를 이용하여 구조체 변수의 값을 설정합니다

4735 단어 Golang공부 노트
struct 변수field를 동적으로 설정해야 할 경우reflect를 사용하여 완성할 수 있습니다.코드는 다음과 같습니다.
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의 지정한 키의 값을 설정할 수 있어 매우 강력하다.

  • 보충 지적을 환영합니다!

    좋은 웹페이지 즐겨찾기