Go基础(反射)
Tutorial: Go初级
Category: Go
Published: 2026-04-07 13:58:26
Views: 21
Likes: 0
Comments: 0
package main
import (
"fmt"
"reflect"
)
func reflectFn(x interface{}) {
v := reflect.TypeOf(x)
v1 := reflect.ValueOf(x)
fmt.Println(v, v1, v.Name(), v.Kind())
}
func f1() {
type myInt int
type Person struct {
Name string
Age int
}
var x myInt = 34
var p = Person{
Name: "张三",
Age: 20,
}
y := "hello"
arr := [3]int{1, 2, 3}
sli := []int{4, 5, 6}
reflectFn(3)
reflectFn(3.14)
reflectFn(true)
reflectFn("golang")
reflectFn(x)
reflectFn(p)
reflectFn(&y)
reflectFn(arr)
reflectFn(sli)
}
func reflectFn1(x interface{}) {
v := reflect.ValueOf(x)
if v.Elem().Kind() == reflect.String {
v.Elem().SetString("world")
}
}
func f2() {
x := "hello"
reflectFn1(&x)
fmt.Println("修改后:", x)
}
func main() {
f2()
}