[{"data":1,"prerenderedAt":8277},["ShallowReactive",2],{"content:\u002F2025\u002F08\u002Fgo-reflect":3,"surround:\u002F2025\u002F08\u002Fgo-reflect":8267},{"id":4,"title":5,"body":6,"categories":8246,"date":8248,"description":8249,"draft":8250,"extension":8251,"image":8252,"meta":8253,"navigation":120,"path":8255,"permalink":8252,"published":8252,"readingTime":8256,"recommend":8252,"references":8252,"seo":8261,"sitemap":8262,"stem":8263,"tags":8264,"type":8265,"updated":8248,"__hash__":8266},"content\u002Fposts\u002F2025\u002F08\u002Fgo-reflect.md","Go 反射机制详解",{"type":7,"value":8,"toc":8219},"minimark",[9,13,17,21,70,75,93,424,427,435,456,494,509,518,522,534,802,804,810,836,840,843,871,1181,1183,1189,1222,1225,1228,1233,1386,1391,1834,1836,1842,1876,1880,2180,2182,2188,2212,2216,2594,2596,2602,2621,2636,2639,2642,2740,2744,3094,3096,3102,3139,3142,3546,3548,3554,3584,3587,4007,4009,4015,4032,4036,4653,4655,4661,4680,4689,4769,4778,4781,4810,5642,5644,5650,5696,5713,5728,5745,5748,5772,5983,5985,5991,6017,6023,6240,6242,6248,6260,6265,6494,6496,6502,6519,6712,6714,6719,6743,6748,6985,6987,6992,7010,7296,7298,7304,7331,7582,7584,7590,7606,7609,7612,7625,7628,7876,7878,7883,7895,7898,7905,8188,8190,8196,8199,8202,8207,8210,8215],[10,11,12],"h2",{"id":12},"什么是反射",[14,15,16],"p",{},"反射可以认为是程序在运行时的一种能力，反射可以在程序运行时访问、检测和修改它本身状态，比如在程序运行时可以检查变量的类型和值，调用它们的方法，甚至修改它们的值。使用反射可以增加程序的灵活性，简单来说，反射就是程序在运行时能够检测自身和修改自身的一种能力。",[10,18,20],{"id":19},"go-语言反射","Go 语言反射",[14,22,23,24,28,29,32,33,36,37,32,39,41,42,44,45,48,49,52,53,48,55,57,58,60,61,63,64,66,67,69],{},"对于很多的高级语言都实现了反射，像 Java，Python。在 Go 语言中，反射在 Go 语言内置的",[25,26,27],"code",{"code":27},"reflect","包下实现。Go 语言中的反射建立在 Go 的类型系统之上，并且与接口密切相关。通过前面的学习我们知道 Go 语言的空接口包含类型(",[25,30,31],{"code":31},"Type",")和值(",[25,34,35],{"code":35},"Value",")两个部分，在反射里，也要用到类型(",[25,38,31],{"code":31},[25,40,35],{"code":35},")。\n",[25,43,27],{"code":27},"包中定义了",[25,46,47],{"code":47},"reflect.Type","和",[25,50,51],{"code":51},"reflect.Value","，正好对应我们前面所说的",[25,54,31],{"code":31},[25,56,35],{"code":35},"。要注意的是",[25,59,47],{"code":47},"是一个接口而",[25,62,51],{"code":51},"是一个具体的结构体。在",[25,65,47],{"code":47},"接口中定义了很多跟类型相关的方法，而",[25,68,51],{"code":51},"则是绑定了很多跟值相关的方法。",[71,72,74],"h3",{"id":73},"reflecttypeof","reflect.TypeOf()",[14,76,77,78,80,81,83,84,86,87,89,90,92],{},"由于",[25,79,47],{"code":47},"是一个接口，所以只有当某个类型实现了这个接口，我们才能获取到它的类型，同时，在",[25,82,27],{"code":27},"包内，类型描述符是未导出类型，所以我们只能通过",[25,85,74],{"code":74},"方法获取",[25,88,47],{"code":47},"类型的值。\n我们首先看一个例子，看下",[25,91,74],{"code":74},"的常用用法：",[94,95,100],"pre",{"className":96,"code":97,"language":98,"meta":99,"style":99},"language-go shiki shiki-themes github-light github-dark","package main\n\nimport (\n    \"fmt\"\n    \"reflect\"\n)\n\ntype Student struct {\n    Name string\n    Age  int\n}\n\nfunc main() {\n    var num int64 = 100\n    t1 := reflect.TypeOf(num)\n    fmt.Println(t1.String())\n\n    st := Student{\n       Name: \"zhangsan\",\n       Age:  18,\n    }\n    t2 := reflect.TypeOf(st)\n    fmt.Println(t2.String())\n}\n","go","",[25,101,102,115,122,136,153,164,170,175,192,203,214,220,225,244,265,290,316,321,335,352,367,376,397,419],{"__ignoreMap":99},[103,104,107,111],"span",{"class":105,"data-line":106,"line":106},"line",1,[103,108,110],{"class":109},"szBVR","package",[103,112,114],{"class":113},"sScJk"," main\n",[103,116,118],{"class":105,"data-line":117,"line":117},2,[103,119,121],{"emptyLinePlaceholder":120},true,"\n",[103,123,125,128,132],{"class":105,"data-line":124,"line":124},3,[103,126,127],{"class":109},"import",[103,129,131],{"class":130},"sVt8B"," ",[103,133,135],{"class":134},"sSDpw","(\n",[103,137,139,143,147,150],{"class":105,"data-line":138,"line":138},4,[103,140,142],{"class":141},"indent","    ",[103,144,146],{"class":145},"sZZnC","\"",[103,148,149],{"class":113},"fmt",[103,151,152],{"class":145},"\"\n",[103,154,156,158,160,162],{"class":105,"data-line":155,"line":155},5,[103,157,142],{"class":141},[103,159,146],{"class":145},[103,161,27],{"class":113},[103,163,152],{"class":145},[103,165,167],{"class":105,"data-line":166,"line":166},6,[103,168,169],{"class":134},")\n",[103,171,173],{"class":105,"data-line":172,"line":172},7,[103,174,121],{"emptyLinePlaceholder":120},[103,176,178,181,184,187,189],{"class":105,"data-line":177,"line":177},8,[103,179,180],{"class":109},"type",[103,182,183],{"class":113}," Student",[103,185,186],{"class":109}," struct",[103,188,131],{"class":130},[103,190,191],{"class":134},"{\n",[103,193,195,197,200],{"class":105,"data-line":194,"line":194},9,[103,196,142],{"class":141},[103,198,199],{"class":130},"Name ",[103,201,202],{"class":109},"string\n",[103,204,206,208,211],{"class":105,"data-line":205,"line":205},10,[103,207,142],{"class":141},[103,209,210],{"class":130},"Age  ",[103,212,213],{"class":109},"int\n",[103,215,217],{"class":105,"data-line":216,"line":216},11,[103,218,219],{"class":134},"}\n",[103,221,223],{"class":105,"data-line":222,"line":222},12,[103,224,121],{"emptyLinePlaceholder":120},[103,226,228,231,234,237,240,242],{"class":105,"data-line":227,"line":227},13,[103,229,230],{"class":109},"func",[103,232,233],{"class":113}," main",[103,235,236],{"class":134},"(",[103,238,239],{"class":134},")",[103,241,131],{"class":130},[103,243,191],{"class":134},[103,245,247,249,252,255,258,261],{"class":105,"data-line":246,"line":246},14,[103,248,142],{"class":141},[103,250,251],{"class":109},"var",[103,253,254],{"class":130}," num ",[103,256,257],{"class":109},"int64",[103,259,260],{"class":109}," =",[103,262,264],{"class":263},"sj4cs"," 100\n",[103,266,268,270,273,276,279,282,285,288],{"class":105,"data-line":267,"line":267},15,[103,269,142],{"class":141},[103,271,272],{"class":130},"t1 ",[103,274,275],{"class":109},":=",[103,277,278],{"class":130}," reflect.",[103,280,281],{"class":113},"TypeOf",[103,283,236],{"class":284},"sJX2D",[103,286,287],{"class":130},"num",[103,289,169],{"class":284},[103,291,293,295,298,301,303,306,309,312,314],{"class":105,"data-line":292,"line":292},16,[103,294,142],{"class":141},[103,296,297],{"class":130},"fmt.",[103,299,300],{"class":113},"Println",[103,302,236],{"class":284},[103,304,305],{"class":130},"t1.",[103,307,308],{"class":113},"String",[103,310,236],{"class":311},"sqkie",[103,313,239],{"class":311},[103,315,169],{"class":284},[103,317,319],{"class":105,"data-line":318,"line":318},17,[103,320,121],{"emptyLinePlaceholder":120},[103,322,324,326,329,331,333],{"class":105,"data-line":323,"line":323},18,[103,325,142],{"class":141},[103,327,328],{"class":130},"st ",[103,330,275],{"class":109},[103,332,183],{"class":113},[103,334,191],{"class":284},[103,336,338,340,343,346,349],{"class":105,"data-line":337,"line":337},19,[103,339,142],{"class":141},[103,341,342],{"class":141},"   ",[103,344,345],{"class":130},"Name: ",[103,347,348],{"class":145},"\"zhangsan\"",[103,350,351],{"class":130},",\n",[103,353,355,357,359,362,365],{"class":105,"data-line":354,"line":354},20,[103,356,142],{"class":141},[103,358,342],{"class":141},[103,360,361],{"class":130},"Age:  ",[103,363,364],{"class":263},"18",[103,366,351],{"class":130},[103,368,370,372,374],{"class":105,"data-line":369,"line":369},21,[103,371,142],{"class":141},[103,373,99],{"class":130},[103,375,219],{"class":284},[103,377,379,381,384,386,388,390,392,395],{"class":105,"data-line":378,"line":378},22,[103,380,142],{"class":141},[103,382,383],{"class":130},"t2 ",[103,385,275],{"class":109},[103,387,278],{"class":130},[103,389,281],{"class":113},[103,391,236],{"class":284},[103,393,394],{"class":130},"st",[103,396,169],{"class":284},[103,398,400,402,404,406,408,411,413,415,417],{"class":105,"data-line":399,"line":399},23,[103,401,142],{"class":141},[103,403,297],{"class":130},[103,405,300],{"class":113},[103,407,236],{"class":284},[103,409,410],{"class":130},"t2.",[103,412,308],{"class":113},[103,414,236],{"class":311},[103,416,239],{"class":311},[103,418,169],{"class":284},[103,420,422],{"class":105,"data-line":421,"line":421},24,[103,423,219],{"class":134},[14,425,426],{},"运行结果：",[94,428,433],{"className":429,"code":431,"language":432,"meta":99},[430],"language-text","int64\nmain.Student\n","text",[25,434,431],{"__ignoreMap":99},[14,436,437,438,441,442,444,445,448,449,451,452,455],{},"可以看到对于基础类型和",[25,439,440],{"code":440},"struct","类型通过调用",[25,443,74],{"code":74},"都打印出了对应的类型信息。注意",[25,446,447],{"code":447},"reflect.TypeOf","返回的是一个",[25,450,47],{"code":47},"接口类型，我们通过调用这个接口的",[25,453,454],{"code":454},"String()","方法，得到最终的字符串信息。",[14,457,458,459,462,463,465,466,468,469,471,472,474,475,477,478,480,481,483,484,486,487,489,490,493],{},"在前面学习",[25,460,461],{"code":461},"interface","的章节中，我们知道一个具体的数据类型是可以赋值给一个",[25,464,461],{"code":461},"类型的，反过来则不行，要用到",[25,467,461],{"code":461},"的断言。在一个",[25,470,461],{"code":461},"赋值之后，其实是对应了两个类型，一个是静态类型，就是在程序编译期就确定的类型，",[25,473,461],{"code":461},"的静态类型就是接口",[25,476,461],{"code":461},"，同时当",[25,479,461],{"code":461},"赋值之后，他还有一个动态类型，就是被赋值的那个数据的具体类型，假设在上例中，我们将",[25,482,394],{"code":394},"赋值给一个空",[25,485,461],{"code":461},"，那么这个",[25,488,461],{"code":461},"的动态类型就是",[25,491,492],{"code":492},"Student","。",[14,495,496,497,499,500,502,503,505,506,508],{},"对一个数据对象进行反射操作，其实是首先将具体对象类型转化为一个",[25,498,461],{"code":461},"类型，然后再将",[25,501,461],{"code":461},"类型转化为",[25,504,27],{"code":27},"包下的反射类型，反射类型里的类型信息和值信息其实就是对应着这个中间类型",[25,507,461],{"code":461},"的类型和值。",[14,510,511,513,514,517],{},[25,512,74],{"code":74},"方法获取的就是这个",[25,515,516],{"code":516},"interface{}","中的类型部分。",[71,519,521],{"id":520},"reflectvalueof","reflect.ValueOf()",[14,523,524,525,527,528,530,531,533],{},"同理，",[25,526,521],{"code":521},"方法自然就是获取接口中的值部分，",[25,529,521],{"code":521},"的返回值其实就是一个",[25,532,51],{"code":51},"结构。",[94,535,537],{"className":96,"code":536,"language":98,"meta":99,"style":99},"import (\n    \"fmt\"\n    \"reflect\"\n)\n\ntype Student struct {\n    Name string\n    Age  int\n}\n\nfunc main() {\n    var num int64 = 100\n    v1 := reflect.ValueOf(num)\n    fmt.Println(v1)\n    fmt.Println(v1.String())\n\n    st := Student{\n       Name: \"zhangsan\",\n       Age:  18,\n    }\n    v2 := reflect.ValueOf(st)\n    fmt.Println(v2)\n    fmt.Println(v2.String())\n}\n",[25,538,539,547,557,567,571,575,587,595,603,607,611,625,639,659,674,695,699,711,723,735,743,762,777,798],{"__ignoreMap":99},[103,540,541,543,545],{"class":105,"data-line":106,"line":106},[103,542,127],{"class":109},[103,544,131],{"class":130},[103,546,135],{"class":134},[103,548,549,551,553,555],{"class":105,"data-line":117,"line":117},[103,550,142],{"class":141},[103,552,146],{"class":145},[103,554,149],{"class":113},[103,556,152],{"class":145},[103,558,559,561,563,565],{"class":105,"data-line":124,"line":124},[103,560,142],{"class":141},[103,562,146],{"class":145},[103,564,27],{"class":113},[103,566,152],{"class":145},[103,568,569],{"class":105,"data-line":138,"line":138},[103,570,169],{"class":134},[103,572,573],{"class":105,"data-line":155,"line":155},[103,574,121],{"emptyLinePlaceholder":120},[103,576,577,579,581,583,585],{"class":105,"data-line":166,"line":166},[103,578,180],{"class":109},[103,580,183],{"class":113},[103,582,186],{"class":109},[103,584,131],{"class":130},[103,586,191],{"class":134},[103,588,589,591,593],{"class":105,"data-line":172,"line":172},[103,590,142],{"class":141},[103,592,199],{"class":130},[103,594,202],{"class":109},[103,596,597,599,601],{"class":105,"data-line":177,"line":177},[103,598,142],{"class":141},[103,600,210],{"class":130},[103,602,213],{"class":109},[103,604,605],{"class":105,"data-line":194,"line":194},[103,606,219],{"class":134},[103,608,609],{"class":105,"data-line":205,"line":205},[103,610,121],{"emptyLinePlaceholder":120},[103,612,613,615,617,619,621,623],{"class":105,"data-line":216,"line":216},[103,614,230],{"class":109},[103,616,233],{"class":113},[103,618,236],{"class":134},[103,620,239],{"class":134},[103,622,131],{"class":130},[103,624,191],{"class":134},[103,626,627,629,631,633,635,637],{"class":105,"data-line":222,"line":222},[103,628,142],{"class":141},[103,630,251],{"class":109},[103,632,254],{"class":130},[103,634,257],{"class":109},[103,636,260],{"class":109},[103,638,264],{"class":263},[103,640,641,643,646,648,650,653,655,657],{"class":105,"data-line":227,"line":227},[103,642,142],{"class":141},[103,644,645],{"class":130},"v1 ",[103,647,275],{"class":109},[103,649,278],{"class":130},[103,651,652],{"class":113},"ValueOf",[103,654,236],{"class":284},[103,656,287],{"class":130},[103,658,169],{"class":284},[103,660,661,663,665,667,669,672],{"class":105,"data-line":246,"line":246},[103,662,142],{"class":141},[103,664,297],{"class":130},[103,666,300],{"class":113},[103,668,236],{"class":284},[103,670,671],{"class":130},"v1",[103,673,169],{"class":284},[103,675,676,678,680,682,684,687,689,691,693],{"class":105,"data-line":267,"line":267},[103,677,142],{"class":141},[103,679,297],{"class":130},[103,681,300],{"class":113},[103,683,236],{"class":284},[103,685,686],{"class":130},"v1.",[103,688,308],{"class":113},[103,690,236],{"class":311},[103,692,239],{"class":311},[103,694,169],{"class":284},[103,696,697],{"class":105,"data-line":292,"line":292},[103,698,121],{"emptyLinePlaceholder":120},[103,700,701,703,705,707,709],{"class":105,"data-line":318,"line":318},[103,702,142],{"class":141},[103,704,328],{"class":130},[103,706,275],{"class":109},[103,708,183],{"class":113},[103,710,191],{"class":284},[103,712,713,715,717,719,721],{"class":105,"data-line":323,"line":323},[103,714,142],{"class":141},[103,716,342],{"class":141},[103,718,345],{"class":130},[103,720,348],{"class":145},[103,722,351],{"class":130},[103,724,725,727,729,731,733],{"class":105,"data-line":337,"line":337},[103,726,142],{"class":141},[103,728,342],{"class":141},[103,730,361],{"class":130},[103,732,364],{"class":263},[103,734,351],{"class":130},[103,736,737,739,741],{"class":105,"data-line":354,"line":354},[103,738,142],{"class":141},[103,740,99],{"class":130},[103,742,219],{"class":284},[103,744,745,747,750,752,754,756,758,760],{"class":105,"data-line":369,"line":369},[103,746,142],{"class":141},[103,748,749],{"class":130},"v2 ",[103,751,275],{"class":109},[103,753,278],{"class":130},[103,755,652],{"class":113},[103,757,236],{"class":284},[103,759,394],{"class":130},[103,761,169],{"class":284},[103,763,764,766,768,770,772,775],{"class":105,"data-line":378,"line":378},[103,765,142],{"class":141},[103,767,297],{"class":130},[103,769,300],{"class":113},[103,771,236],{"class":284},[103,773,774],{"class":130},"v2",[103,776,169],{"class":284},[103,778,779,781,783,785,787,790,792,794,796],{"class":105,"data-line":399,"line":399},[103,780,142],{"class":141},[103,782,297],{"class":130},[103,784,300],{"class":113},[103,786,236],{"class":284},[103,788,789],{"class":130},"v2.",[103,791,308],{"class":113},[103,793,236],{"class":311},[103,795,239],{"class":311},[103,797,169],{"class":284},[103,799,800],{"class":105,"data-line":421,"line":421},[103,801,219],{"class":134},[14,803,426],{},[94,805,808],{"className":806,"code":807,"language":432,"meta":99},[430],"100\n\u003Cint64 Value>\n{zhangsan 18}\n\u003Cmain.Student Value>\n",[25,809,807],{"__ignoreMap":99},[14,811,812,813,48,816,819,820,822,823,825,826,828,829,832,833,835],{},"注意到这里",[25,814,815],{"code":815},"fmt.Println(v1)",[25,817,818],{"code":818},"fmt.Println(v1.String())","打印的不一样，上面说了",[25,821,521],{"code":521},"的返回值就是一个",[25,824,51],{"code":51},"结构，但是",[25,827,815],{"code":815},"却打印出了具体的值，这是因为",[25,830,831],{"code":831},"fmt.Println","的参数是一个接口类型，在执行过程中有一些类型转换，对",[25,834,51],{"code":51},"结构做了特殊处理。",[71,837,839],{"id":838},"go-语言数据种类","Go 语言数据种类",[14,841,842],{},"在 Go 语言中常用的数据类型有 26 种",[14,844,845,846,849,850,853,854,849,857,849,860,863,864,867,868,870],{},"这些类型中包含",[25,847,848],{"code":848},"int","，",[25,851,852],{"code":852},"bool","之类的基础数据类型，也包含",[25,855,856],{"code":856},"Struct",[25,858,859],{"code":859},"Array",[25,861,862],{"code":862},"Map","等复合类型，有了这些类型，我们用",[25,865,866],{"code":866},"type struct","自定义的任何类型都可以由他们组合完成。\n看个",[25,869,866],{"code":866},"定义的数据类型使用反射的例子：",[94,872,874],{"className":96,"code":873,"language":98,"meta":99,"style":99},"package main\n\nimport (\n    \"fmt\"\n    \"reflect\"\n)\n\ntype WrapInt int\n\nfunc main() {\n    var num1 int = 100\n    var num2 WrapInt = 1000\n\n    num1 = int(num2) \u002F\u002F 不同类型的type赋值，这里要强转\n\n    typeNum1 := reflect.TypeOf(num1)\n    fmt.Printf(\"type of num1 is %s\\n\", typeNum1.String())\n\n    typeNum2 := reflect.TypeOf(num2)\n    fmt.Printf(\"type of num2 is %s\\n\", typeNum2.String())\n\n    fmt.Printf(\"kind of num1 is %v\\n\", typeNum1.Kind())\n    fmt.Printf(\"kind of num2 is %v\\n\", typeNum2.Kind())\n}\n",[25,875,876,882,886,894,904,914,918,922,932,936,950,965,982,986,1012,1016,1036,1066,1070,1089,1117,1121,1150,1177],{"__ignoreMap":99},[103,877,878,880],{"class":105,"data-line":106,"line":106},[103,879,110],{"class":109},[103,881,114],{"class":113},[103,883,884],{"class":105,"data-line":117,"line":117},[103,885,121],{"emptyLinePlaceholder":120},[103,887,888,890,892],{"class":105,"data-line":124,"line":124},[103,889,127],{"class":109},[103,891,131],{"class":130},[103,893,135],{"class":134},[103,895,896,898,900,902],{"class":105,"data-line":138,"line":138},[103,897,142],{"class":141},[103,899,146],{"class":145},[103,901,149],{"class":113},[103,903,152],{"class":145},[103,905,906,908,910,912],{"class":105,"data-line":155,"line":155},[103,907,142],{"class":141},[103,909,146],{"class":145},[103,911,27],{"class":113},[103,913,152],{"class":145},[103,915,916],{"class":105,"data-line":166,"line":166},[103,917,169],{"class":134},[103,919,920],{"class":105,"data-line":172,"line":172},[103,921,121],{"emptyLinePlaceholder":120},[103,923,924,926,929],{"class":105,"data-line":177,"line":177},[103,925,180],{"class":109},[103,927,928],{"class":113}," WrapInt",[103,930,931],{"class":109}," int\n",[103,933,934],{"class":105,"data-line":194,"line":194},[103,935,121],{"emptyLinePlaceholder":120},[103,937,938,940,942,944,946,948],{"class":105,"data-line":205,"line":205},[103,939,230],{"class":109},[103,941,233],{"class":113},[103,943,236],{"class":134},[103,945,239],{"class":134},[103,947,131],{"class":130},[103,949,191],{"class":134},[103,951,952,954,956,959,961,963],{"class":105,"data-line":216,"line":216},[103,953,142],{"class":141},[103,955,251],{"class":109},[103,957,958],{"class":130}," num1 ",[103,960,848],{"class":109},[103,962,260],{"class":109},[103,964,264],{"class":263},[103,966,967,969,971,974,977,979],{"class":105,"data-line":222,"line":222},[103,968,142],{"class":141},[103,970,251],{"class":109},[103,972,973],{"class":130}," num2 ",[103,975,976],{"class":113},"WrapInt",[103,978,260],{"class":109},[103,980,981],{"class":263}," 1000\n",[103,983,984],{"class":105,"data-line":227,"line":227},[103,985,121],{"emptyLinePlaceholder":120},[103,987,988,990,993,996,999,1001,1004,1006,1008],{"class":105,"data-line":246,"line":246},[103,989,142],{"class":141},[103,991,992],{"class":130},"num1 ",[103,994,995],{"class":109},"=",[103,997,998],{"class":109}," int",[103,1000,236],{"class":284},[103,1002,1003],{"class":130},"num2",[103,1005,239],{"class":284},[103,1007,131],{"class":130},[103,1009,1011],{"class":1010},"sJ8bj","\u002F\u002F 不同类型的type赋值，这里要强转\n",[103,1013,1014],{"class":105,"data-line":267,"line":267},[103,1015,121],{"emptyLinePlaceholder":120},[103,1017,1018,1020,1023,1025,1027,1029,1031,1034],{"class":105,"data-line":292,"line":292},[103,1019,142],{"class":141},[103,1021,1022],{"class":130},"typeNum1 ",[103,1024,275],{"class":109},[103,1026,278],{"class":130},[103,1028,281],{"class":113},[103,1030,236],{"class":284},[103,1032,1033],{"class":130},"num1",[103,1035,169],{"class":284},[103,1037,1038,1040,1042,1045,1047,1050,1053,1055,1058,1060,1062,1064],{"class":105,"data-line":318,"line":318},[103,1039,142],{"class":141},[103,1041,297],{"class":130},[103,1043,1044],{"class":113},"Printf",[103,1046,236],{"class":284},[103,1048,1049],{"class":145},"\"type of num1 is ",[103,1051,1052],{"class":263},"%s\\n",[103,1054,146],{"class":145},[103,1056,1057],{"class":130},", typeNum1.",[103,1059,308],{"class":113},[103,1061,236],{"class":311},[103,1063,239],{"class":311},[103,1065,169],{"class":284},[103,1067,1068],{"class":105,"data-line":323,"line":323},[103,1069,121],{"emptyLinePlaceholder":120},[103,1071,1072,1074,1077,1079,1081,1083,1085,1087],{"class":105,"data-line":337,"line":337},[103,1073,142],{"class":141},[103,1075,1076],{"class":130},"typeNum2 ",[103,1078,275],{"class":109},[103,1080,278],{"class":130},[103,1082,281],{"class":113},[103,1084,236],{"class":284},[103,1086,1003],{"class":130},[103,1088,169],{"class":284},[103,1090,1091,1093,1095,1097,1099,1102,1104,1106,1109,1111,1113,1115],{"class":105,"data-line":354,"line":354},[103,1092,142],{"class":141},[103,1094,297],{"class":130},[103,1096,1044],{"class":113},[103,1098,236],{"class":284},[103,1100,1101],{"class":145},"\"type of num2 is ",[103,1103,1052],{"class":263},[103,1105,146],{"class":145},[103,1107,1108],{"class":130},", typeNum2.",[103,1110,308],{"class":113},[103,1112,236],{"class":311},[103,1114,239],{"class":311},[103,1116,169],{"class":284},[103,1118,1119],{"class":105,"data-line":369,"line":369},[103,1120,121],{"emptyLinePlaceholder":120},[103,1122,1123,1125,1127,1129,1131,1134,1137,1139,1141,1144,1146,1148],{"class":105,"data-line":378,"line":378},[103,1124,142],{"class":141},[103,1126,297],{"class":130},[103,1128,1044],{"class":113},[103,1130,236],{"class":284},[103,1132,1133],{"class":145},"\"kind of num1 is ",[103,1135,1136],{"class":263},"%v\\n",[103,1138,146],{"class":145},[103,1140,1057],{"class":130},[103,1142,1143],{"class":113},"Kind",[103,1145,236],{"class":311},[103,1147,239],{"class":311},[103,1149,169],{"class":284},[103,1151,1152,1154,1156,1158,1160,1163,1165,1167,1169,1171,1173,1175],{"class":105,"data-line":399,"line":399},[103,1153,142],{"class":141},[103,1155,297],{"class":130},[103,1157,1044],{"class":113},[103,1159,236],{"class":284},[103,1161,1162],{"class":145},"\"kind of num2 is ",[103,1164,1136],{"class":263},[103,1166,146],{"class":145},[103,1168,1108],{"class":130},[103,1170,1143],{"class":113},[103,1172,236],{"class":311},[103,1174,239],{"class":311},[103,1176,169],{"class":284},[103,1178,1179],{"class":105,"data-line":421,"line":421},[103,1180,219],{"class":134},[14,1182,426],{},[94,1184,1187],{"className":1185,"code":1186,"language":432,"meta":99},[430],"type of num1 is int\ntype of num2 is main.WrapInt\nkind of num1 is int\nkind of num2 is int\n",[25,1188,1186],{"__ignoreMap":99},[14,1190,1191,1192,1194,1195,1197,1198,1200,1201,1203,1204,1206,1207,1209,1210,1212,1213,1215,1216,1218,1219,1221],{},"通过",[25,1193,976],{"code":976},"的定义可以看到，",[25,1196,976],{"code":976},"其实就是用",[25,1199,180],{"code":180},"给",[25,1202,848],{"code":848},"去了个别名，二者底层其实都是",[25,1205,848],{"code":848},"类型，但是通过",[25,1208,447],{"code":447},"获取到各自的",[25,1211,180],{"code":180},"其实是不一样的，不同",[25,1214,180],{"code":180},"之间的变量赋值是需要类型强制转换的，但是深层次的去分析",[25,1217,180],{"code":180},"的种类，即",[25,1220,1143],{"code":1143},"确是一样的。",[10,1223,1224],{"id":1224},"反射使用",[71,1226,1227],{"id":1227},"值对象",[14,1229,1230,1232],{},[25,1231,27],{"code":27},"包下跟值对象相关的常用函数或方法：",[1234,1235,1236,1249],"table",{},[1237,1238,1239],"thead",{},[1240,1241,1242,1246],"tr",{},[1243,1244,1245],"th",{},"函数\u002F方法",[1243,1247,1248],{},"说明",[1250,1251,1252,1264,1275,1285,1295,1305,1318,1334,1344,1357],"tbody",{},[1240,1253,1254,1259],{},[1255,1256,1257],"td",{},[25,1258,74],{"code":74},[1255,1260,1261,1262,239],{},"获取某个对象的反射类型实现(",[25,1263,47],{"code":47},[1240,1265,1266,1270],{},[1255,1267,1268],{},[25,1269,521],{"code":521},[1255,1271,1272,1273,239],{},"获取某个对象的反射值对象(",[25,1274,51],{"code":51},[1240,1276,1277,1282],{},[1255,1278,1279],{},[25,1280,1281],{"code":1281},"reflect.Value.NumField()",[1255,1283,1284],{},"获取结构体的反射值对象中的字段个数，只对结构体类型有效",[1240,1286,1287,1292],{},[1255,1288,1289],{},[25,1290,1291],{"code":1291},"reflect.Value.Field(i)",[1255,1293,1294],{},"获取结构体的反射值对象中的第 i 个字段，只对结构体类型有效",[1240,1296,1297,1302],{},[1255,1298,1299],{},[25,1300,1301],{"code":1301},"reflect.Kind()",[1255,1303,1304],{},"从反射值对象中获取该值的种类",[1240,1306,1307,1312],{},[1255,1308,1309],{},[25,1310,1311],{"code":1311},"reflect.Value.MapKeys()",[1255,1313,1314,1315,1317],{},"对 map 的每个键的",[25,1316,51],{"code":51},"对象组成的一个切片",[1240,1319,1320,1325],{},[1255,1321,1322],{},[25,1323,1324],{"code":1324},"reflect.Value.MapIndex(i)",[1255,1326,1327,1328,1330,1331,1333],{},"根据 map 的某个键的",[25,1329,51],{"code":51},"对象，返回值的",[25,1332,51],{"code":51},"对象",[1240,1335,1336,1341],{},[1255,1337,1338],{},[25,1339,1340],{"code":1340},"reflect.Value.Len()",[1255,1342,1343],{},"对切片或数组的反射对象求切片或数组的长度",[1240,1345,1346,1351],{},[1255,1347,1348],{},[25,1349,1350],{"code":1350},"reflect.Value.Index(i)",[1255,1352,1353,1354,1356],{},"返回切片或数组第 i 个元素的",[25,1355,51],{"code":51},"值",[1240,1358,1359,1364],{},[1255,1360,1361],{},[25,1362,1363],{"code":1363},"reflect.Int()\u002Freflect.Uint()\u002Freflect.String()\u002Freflect.Bool()",[1255,1365,1366,1367,1370,1371,1374,1375,1378,1379,1374,1382,1385],{},"从反射的值对象中取出对应值，注意",[25,1368,1369],{"code":1369},"reflect.Int()\u002Freflect.Uint()","方法对种类做了合并处理，它们只返回相应的最大范围的类型，",[25,1372,1373],{"code":1373},"Int()","返回",[25,1376,1377],{"code":1377},"Int64","类型，",[25,1380,1381],{"code":1381},"Uint()",[25,1383,1384],{"code":1384},"Uint64","类型",[1387,1388,1390],"h4",{"id":1389},"获取-struct-反射值","获取 struct 反射值",[94,1392,1394],{"className":96,"code":1393,"language":98,"meta":99,"style":99},"package main\n\nimport (\n    \"fmt\"\n    \"reflect\"\n)\n\ntype Student struct {\n    Name  string\n    Age   int\n    Score float64\n}\n\nfunc main() {\n\n    st := Student{\n       Name:  \"zhangsan\",\n       Age:   18,\n       Score: 95.5,\n    }\n    v := reflect.ValueOf(st)\n    fmt.Printf(\"the field num of Student is %d\\n\", v.NumField())\n    fmt.Printf(\"field1 type is %v, value is %s\\n\", v.Field(0).Type().Name(), v.Field(0).String())\n    fmt.Printf(\"field2 type is %v, value is %d\\n\", v.Field(1).Type().Name(), v.Field(1).Int())\n    fmt.Printf(\"field2 type is %v, value is %f\\n\", v.Field(2).Type().Name(), v.Field(2).Float())\n}\n",[25,1395,1396,1402,1406,1414,1424,1434,1438,1442,1454,1463,1472,1482,1486,1490,1504,1508,1520,1533,1546,1560,1568,1587,1617,1690,1759,1829],{"__ignoreMap":99},[103,1397,1398,1400],{"class":105,"data-line":106,"line":106},[103,1399,110],{"class":109},[103,1401,114],{"class":113},[103,1403,1404],{"class":105,"data-line":117,"line":117},[103,1405,121],{"emptyLinePlaceholder":120},[103,1407,1408,1410,1412],{"class":105,"data-line":124,"line":124},[103,1409,127],{"class":109},[103,1411,131],{"class":130},[103,1413,135],{"class":134},[103,1415,1416,1418,1420,1422],{"class":105,"data-line":138,"line":138},[103,1417,142],{"class":141},[103,1419,146],{"class":145},[103,1421,149],{"class":113},[103,1423,152],{"class":145},[103,1425,1426,1428,1430,1432],{"class":105,"data-line":155,"line":155},[103,1427,142],{"class":141},[103,1429,146],{"class":145},[103,1431,27],{"class":113},[103,1433,152],{"class":145},[103,1435,1436],{"class":105,"data-line":166,"line":166},[103,1437,169],{"class":134},[103,1439,1440],{"class":105,"data-line":172,"line":172},[103,1441,121],{"emptyLinePlaceholder":120},[103,1443,1444,1446,1448,1450,1452],{"class":105,"data-line":177,"line":177},[103,1445,180],{"class":109},[103,1447,183],{"class":113},[103,1449,186],{"class":109},[103,1451,131],{"class":130},[103,1453,191],{"class":134},[103,1455,1456,1458,1461],{"class":105,"data-line":194,"line":194},[103,1457,142],{"class":141},[103,1459,1460],{"class":130},"Name  ",[103,1462,202],{"class":109},[103,1464,1465,1467,1470],{"class":105,"data-line":205,"line":205},[103,1466,142],{"class":141},[103,1468,1469],{"class":130},"Age   ",[103,1471,213],{"class":109},[103,1473,1474,1476,1479],{"class":105,"data-line":216,"line":216},[103,1475,142],{"class":141},[103,1477,1478],{"class":130},"Score ",[103,1480,1481],{"class":109},"float64\n",[103,1483,1484],{"class":105,"data-line":222,"line":222},[103,1485,219],{"class":134},[103,1487,1488],{"class":105,"data-line":227,"line":227},[103,1489,121],{"emptyLinePlaceholder":120},[103,1491,1492,1494,1496,1498,1500,1502],{"class":105,"data-line":246,"line":246},[103,1493,230],{"class":109},[103,1495,233],{"class":113},[103,1497,236],{"class":134},[103,1499,239],{"class":134},[103,1501,131],{"class":130},[103,1503,191],{"class":134},[103,1505,1506],{"class":105,"data-line":267,"line":267},[103,1507,121],{"emptyLinePlaceholder":120},[103,1509,1510,1512,1514,1516,1518],{"class":105,"data-line":292,"line":292},[103,1511,142],{"class":141},[103,1513,328],{"class":130},[103,1515,275],{"class":109},[103,1517,183],{"class":113},[103,1519,191],{"class":284},[103,1521,1522,1524,1526,1529,1531],{"class":105,"data-line":318,"line":318},[103,1523,142],{"class":141},[103,1525,342],{"class":141},[103,1527,1528],{"class":130},"Name:  ",[103,1530,348],{"class":145},[103,1532,351],{"class":130},[103,1534,1535,1537,1539,1542,1544],{"class":105,"data-line":323,"line":323},[103,1536,142],{"class":141},[103,1538,342],{"class":141},[103,1540,1541],{"class":130},"Age:   ",[103,1543,364],{"class":263},[103,1545,351],{"class":130},[103,1547,1548,1550,1552,1555,1558],{"class":105,"data-line":337,"line":337},[103,1549,142],{"class":141},[103,1551,342],{"class":141},[103,1553,1554],{"class":130},"Score: ",[103,1556,1557],{"class":263},"95.5",[103,1559,351],{"class":130},[103,1561,1562,1564,1566],{"class":105,"data-line":354,"line":354},[103,1563,142],{"class":141},[103,1565,99],{"class":130},[103,1567,219],{"class":284},[103,1569,1570,1572,1575,1577,1579,1581,1583,1585],{"class":105,"data-line":369,"line":369},[103,1571,142],{"class":141},[103,1573,1574],{"class":130},"v ",[103,1576,275],{"class":109},[103,1578,278],{"class":130},[103,1580,652],{"class":113},[103,1582,236],{"class":284},[103,1584,394],{"class":130},[103,1586,169],{"class":284},[103,1588,1589,1591,1593,1595,1597,1600,1603,1605,1608,1611,1613,1615],{"class":105,"data-line":378,"line":378},[103,1590,142],{"class":141},[103,1592,297],{"class":130},[103,1594,1044],{"class":113},[103,1596,236],{"class":284},[103,1598,1599],{"class":145},"\"the field num of Student is ",[103,1601,1602],{"class":263},"%d\\n",[103,1604,146],{"class":145},[103,1606,1607],{"class":130},", v.",[103,1609,1610],{"class":113},"NumField",[103,1612,236],{"class":311},[103,1614,239],{"class":311},[103,1616,169],{"class":284},[103,1618,1619,1621,1623,1625,1627,1630,1633,1636,1638,1640,1642,1645,1647,1650,1652,1655,1657,1659,1661,1663,1666,1668,1670,1672,1674,1676,1678,1680,1682,1684,1686,1688],{"class":105,"data-line":399,"line":399},[103,1620,142],{"class":141},[103,1622,297],{"class":130},[103,1624,1044],{"class":113},[103,1626,236],{"class":284},[103,1628,1629],{"class":145},"\"field1 type is ",[103,1631,1632],{"class":263},"%v",[103,1634,1635],{"class":145},", value is ",[103,1637,1052],{"class":263},[103,1639,146],{"class":145},[103,1641,1607],{"class":130},[103,1643,1644],{"class":113},"Field",[103,1646,236],{"class":311},[103,1648,1649],{"class":263},"0",[103,1651,239],{"class":311},[103,1653,1654],{"class":130},".",[103,1656,31],{"class":113},[103,1658,236],{"class":311},[103,1660,239],{"class":311},[103,1662,1654],{"class":130},[103,1664,1665],{"class":113},"Name",[103,1667,236],{"class":311},[103,1669,239],{"class":311},[103,1671,1607],{"class":130},[103,1673,1644],{"class":113},[103,1675,236],{"class":311},[103,1677,1649],{"class":263},[103,1679,239],{"class":311},[103,1681,1654],{"class":130},[103,1683,308],{"class":113},[103,1685,236],{"class":311},[103,1687,239],{"class":311},[103,1689,169],{"class":284},[103,1691,1692,1694,1696,1698,1700,1703,1705,1707,1709,1711,1713,1715,1717,1720,1722,1724,1726,1728,1730,1732,1734,1736,1738,1740,1742,1744,1746,1748,1750,1753,1755,1757],{"class":105,"data-line":421,"line":421},[103,1693,142],{"class":141},[103,1695,297],{"class":130},[103,1697,1044],{"class":113},[103,1699,236],{"class":284},[103,1701,1702],{"class":145},"\"field2 type is ",[103,1704,1632],{"class":263},[103,1706,1635],{"class":145},[103,1708,1602],{"class":263},[103,1710,146],{"class":145},[103,1712,1607],{"class":130},[103,1714,1644],{"class":113},[103,1716,236],{"class":311},[103,1718,1719],{"class":263},"1",[103,1721,239],{"class":311},[103,1723,1654],{"class":130},[103,1725,31],{"class":113},[103,1727,236],{"class":311},[103,1729,239],{"class":311},[103,1731,1654],{"class":130},[103,1733,1665],{"class":113},[103,1735,236],{"class":311},[103,1737,239],{"class":311},[103,1739,1607],{"class":130},[103,1741,1644],{"class":113},[103,1743,236],{"class":311},[103,1745,1719],{"class":263},[103,1747,239],{"class":311},[103,1749,1654],{"class":130},[103,1751,1752],{"class":113},"Int",[103,1754,236],{"class":311},[103,1756,239],{"class":311},[103,1758,169],{"class":284},[103,1760,1762,1764,1766,1768,1770,1772,1774,1776,1779,1781,1783,1785,1787,1790,1792,1794,1796,1798,1800,1802,1804,1806,1808,1810,1812,1814,1816,1818,1820,1823,1825,1827],{"class":105,"data-line":1761,"line":1761},25,[103,1763,142],{"class":141},[103,1765,297],{"class":130},[103,1767,1044],{"class":113},[103,1769,236],{"class":284},[103,1771,1702],{"class":145},[103,1773,1632],{"class":263},[103,1775,1635],{"class":145},[103,1777,1778],{"class":263},"%f\\n",[103,1780,146],{"class":145},[103,1782,1607],{"class":130},[103,1784,1644],{"class":113},[103,1786,236],{"class":311},[103,1788,1789],{"class":263},"2",[103,1791,239],{"class":311},[103,1793,1654],{"class":130},[103,1795,31],{"class":113},[103,1797,236],{"class":311},[103,1799,239],{"class":311},[103,1801,1654],{"class":130},[103,1803,1665],{"class":113},[103,1805,236],{"class":311},[103,1807,239],{"class":311},[103,1809,1607],{"class":130},[103,1811,1644],{"class":113},[103,1813,236],{"class":311},[103,1815,1789],{"class":263},[103,1817,239],{"class":311},[103,1819,1654],{"class":130},[103,1821,1822],{"class":113},"Float",[103,1824,236],{"class":311},[103,1826,239],{"class":311},[103,1828,169],{"class":284},[103,1830,1832],{"class":105,"data-line":1831,"line":1831},26,[103,1833,219],{"class":134},[14,1835,426],{},[94,1837,1840],{"className":1838,"code":1839,"language":432,"meta":99},[430],"the field num of Student is 3\nfield1 type is string, value is zhangsan\nfield2 type is int, value is 18\nfield2 type is float64, value is 95.500000\n",[25,1841,1839],{"__ignoreMap":99},[14,1843,1844,849,1847,1850,1851,1853,1854,1857,1858,1860,1861,1864,1865,1868,1869,48,1872,1875],{},[25,1845,1846],{"code":1846},"v := reflect.ValueOf(st)",[25,1848,1849],{"code":1849},"v","是一个",[25,1852,492],{"code":492},"类型的反射值对象，通过",[25,1855,1856],{"code":1856},"v.NumField()","可以得出",[25,1859,492],{"code":492},"类型的字段个数，然后",[25,1862,1863],{"code":1863},"v.Field(i).Type().Name()","打印出各个字段值的类型，",[25,1866,1867],{"code":1867},"v.Field(i)","打印出各个字段值\n注意：",[25,1870,1871],{"code":1871},"NumField()",[25,1873,1874],{"code":1874},"Field()","方法只有原对象是结构体时才能调用，否则会 panic",[1387,1877,1879],{"id":1878},"获取-map-反射值","获取 map 反射值",[94,1881,1883],{"className":96,"code":1882,"language":98,"meta":99,"style":99},"package main\n\nimport (\n    \"fmt\"\n    \"reflect\"\n)\n\nfunc main() {\n    m := map[int]uint32{\n       1: 100,\n       2: 200,\n    }\n    v := reflect.ValueOf(m)\n    for _, k := range v.MapKeys() {\n       field := v.MapIndex(k)\n       fmt.Printf(\"key type is %v, key = %d; value type is %v, value = %d\\n\", k.Type().Name(), k.Int(), field.Type().Name(), field.Uint())\n    }\n}\n",[25,1884,1885,1891,1895,1903,1913,1923,1927,1931,1945,1970,1986,2001,2009,2028,2057,2080,2168,2176],{"__ignoreMap":99},[103,1886,1887,1889],{"class":105,"data-line":106,"line":106},[103,1888,110],{"class":109},[103,1890,114],{"class":113},[103,1892,1893],{"class":105,"data-line":117,"line":117},[103,1894,121],{"emptyLinePlaceholder":120},[103,1896,1897,1899,1901],{"class":105,"data-line":124,"line":124},[103,1898,127],{"class":109},[103,1900,131],{"class":130},[103,1902,135],{"class":134},[103,1904,1905,1907,1909,1911],{"class":105,"data-line":138,"line":138},[103,1906,142],{"class":141},[103,1908,146],{"class":145},[103,1910,149],{"class":113},[103,1912,152],{"class":145},[103,1914,1915,1917,1919,1921],{"class":105,"data-line":155,"line":155},[103,1916,142],{"class":141},[103,1918,146],{"class":145},[103,1920,27],{"class":113},[103,1922,152],{"class":145},[103,1924,1925],{"class":105,"data-line":166,"line":166},[103,1926,169],{"class":134},[103,1928,1929],{"class":105,"data-line":172,"line":172},[103,1930,121],{"emptyLinePlaceholder":120},[103,1932,1933,1935,1937,1939,1941,1943],{"class":105,"data-line":177,"line":177},[103,1934,230],{"class":109},[103,1936,233],{"class":113},[103,1938,236],{"class":134},[103,1940,239],{"class":134},[103,1942,131],{"class":130},[103,1944,191],{"class":134},[103,1946,1947,1949,1952,1954,1957,1960,1962,1965,1968],{"class":105,"data-line":194,"line":194},[103,1948,142],{"class":141},[103,1950,1951],{"class":130},"m ",[103,1953,275],{"class":109},[103,1955,1956],{"class":109}," map",[103,1958,1959],{"class":284},"[",[103,1961,848],{"class":109},[103,1963,1964],{"class":284},"]",[103,1966,1967],{"class":109},"uint32",[103,1969,191],{"class":284},[103,1971,1972,1974,1976,1978,1981,1984],{"class":105,"data-line":205,"line":205},[103,1973,142],{"class":141},[103,1975,342],{"class":141},[103,1977,1719],{"class":263},[103,1979,1980],{"class":130},": ",[103,1982,1983],{"class":263},"100",[103,1985,351],{"class":130},[103,1987,1988,1990,1992,1994,1996,1999],{"class":105,"data-line":216,"line":216},[103,1989,142],{"class":141},[103,1991,342],{"class":141},[103,1993,1789],{"class":263},[103,1995,1980],{"class":130},[103,1997,1998],{"class":263},"200",[103,2000,351],{"class":130},[103,2002,2003,2005,2007],{"class":105,"data-line":222,"line":222},[103,2004,142],{"class":141},[103,2006,99],{"class":130},[103,2008,219],{"class":284},[103,2010,2011,2013,2015,2017,2019,2021,2023,2026],{"class":105,"data-line":227,"line":227},[103,2012,142],{"class":141},[103,2014,1574],{"class":130},[103,2016,275],{"class":109},[103,2018,278],{"class":130},[103,2020,652],{"class":113},[103,2022,236],{"class":284},[103,2024,2025],{"class":130},"m",[103,2027,169],{"class":284},[103,2029,2030,2032,2035,2038,2040,2043,2046,2049,2051,2053,2055],{"class":105,"data-line":246,"line":246},[103,2031,142],{"class":141},[103,2033,2034],{"class":109},"for",[103,2036,2037],{"class":130}," _, k ",[103,2039,275],{"class":109},[103,2041,2042],{"class":109}," range",[103,2044,2045],{"class":130}," v.",[103,2047,2048],{"class":113},"MapKeys",[103,2050,236],{"class":284},[103,2052,239],{"class":284},[103,2054,131],{"class":130},[103,2056,191],{"class":284},[103,2058,2059,2061,2063,2066,2068,2070,2073,2075,2078],{"class":105,"data-line":267,"line":267},[103,2060,142],{"class":141},[103,2062,342],{"class":141},[103,2064,2065],{"class":130},"field ",[103,2067,275],{"class":109},[103,2069,2045],{"class":130},[103,2071,2072],{"class":113},"MapIndex",[103,2074,236],{"class":311},[103,2076,2077],{"class":130},"k",[103,2079,169],{"class":311},[103,2081,2082,2084,2086,2088,2090,2092,2095,2097,2100,2103,2106,2108,2111,2113,2115,2118,2120,2122,2124,2126,2128,2130,2132,2134,2136,2138,2140,2143,2145,2147,2149,2151,2153,2155,2157,2159,2162,2164,2166],{"class":105,"data-line":292,"line":292},[103,2083,142],{"class":141},[103,2085,342],{"class":141},[103,2087,297],{"class":130},[103,2089,1044],{"class":113},[103,2091,236],{"class":311},[103,2093,2094],{"class":145},"\"key type is ",[103,2096,1632],{"class":263},[103,2098,2099],{"class":145},", key = ",[103,2101,2102],{"class":263},"%d",[103,2104,2105],{"class":145},"; value type is ",[103,2107,1632],{"class":263},[103,2109,2110],{"class":145},", value = ",[103,2112,1602],{"class":263},[103,2114,146],{"class":145},[103,2116,2117],{"class":130},", k.",[103,2119,31],{"class":113},[103,2121,236],{"class":134},[103,2123,239],{"class":134},[103,2125,1654],{"class":130},[103,2127,1665],{"class":113},[103,2129,236],{"class":134},[103,2131,239],{"class":134},[103,2133,2117],{"class":130},[103,2135,1752],{"class":113},[103,2137,236],{"class":134},[103,2139,239],{"class":134},[103,2141,2142],{"class":130},", field.",[103,2144,31],{"class":113},[103,2146,236],{"class":134},[103,2148,239],{"class":134},[103,2150,1654],{"class":130},[103,2152,1665],{"class":113},[103,2154,236],{"class":134},[103,2156,239],{"class":134},[103,2158,2142],{"class":130},[103,2160,2161],{"class":113},"Uint",[103,2163,236],{"class":134},[103,2165,239],{"class":134},[103,2167,169],{"class":311},[103,2169,2170,2172,2174],{"class":105,"data-line":318,"line":318},[103,2171,142],{"class":141},[103,2173,99],{"class":130},[103,2175,219],{"class":284},[103,2177,2178],{"class":105,"data-line":323,"line":323},[103,2179,219],{"class":134},[14,2181,426],{},[94,2183,2186],{"className":2184,"code":2185,"language":432,"meta":99},[430],"key type is int, key = 1; value type is uint32, value = 100\nkey type is int, key = 2; value type is uint32, value = 200\n",[25,2187,2185],{"__ignoreMap":99},[14,2189,2190,2193,2194,2197,2198,2200,2201,2204,2205,2207,2208,2211],{},[25,2191,2192],{"code":2192},"v := reflect.ValueOf(m)","对 map 类型的对象 m 进行反射，通过",[25,2195,2196],{"code":2196},"v.MapKeys()","的到 m 中所有 key 的",[25,2199,51],{"code":51},"对象 k，然后通过",[25,2202,2203],{"code":2203},"v.MapIndex(k)","的到对应 key 反射值对象的 value 反射值对象，然后通过",[25,2206,51],{"code":51},"的",[25,2209,2210],{"code":2210},"Type().Name()","方法获取 map 中 key，value 的类型，然后打印出对应值",[1387,2213,2215],{"id":2214},"获取-slice-反射值","获取 slice 反射值",[94,2217,2219],{"className":96,"code":2218,"language":98,"meta":99,"style":99},"import (\n    \"fmt\"\n    \"reflect\"\n)\n\nfunc main() {\n    slice := []int{1, 2, 3}\n    v1 := reflect.ValueOf(slice)\n    for i := 0; i \u003C v1.Len(); i++ {\n       elem := v1.Index(i)\n       fmt.Printf(\"%v \", elem.Interface())\n    }\n\n    fmt.Println()\n\n    nums := [3]int{4, 5, 6}\n    v2 := reflect.ValueOf(nums)\n    for i := 0; i \u003C v2.Len(); i++ {\n       elem := v2.Index(i)\n       fmt.Printf(\"%v \", elem.Interface())\n    }\n}\n",[25,2220,2221,2229,2239,2249,2253,2257,2271,2305,2324,2364,2387,2418,2426,2430,2442,2446,2482,2501,2534,2554,2582,2590],{"__ignoreMap":99},[103,2222,2223,2225,2227],{"class":105,"data-line":106,"line":106},[103,2224,127],{"class":109},[103,2226,131],{"class":130},[103,2228,135],{"class":134},[103,2230,2231,2233,2235,2237],{"class":105,"data-line":117,"line":117},[103,2232,142],{"class":141},[103,2234,146],{"class":145},[103,2236,149],{"class":113},[103,2238,152],{"class":145},[103,2240,2241,2243,2245,2247],{"class":105,"data-line":124,"line":124},[103,2242,142],{"class":141},[103,2244,146],{"class":145},[103,2246,27],{"class":113},[103,2248,152],{"class":145},[103,2250,2251],{"class":105,"data-line":138,"line":138},[103,2252,169],{"class":134},[103,2254,2255],{"class":105,"data-line":155,"line":155},[103,2256,121],{"emptyLinePlaceholder":120},[103,2258,2259,2261,2263,2265,2267,2269],{"class":105,"data-line":166,"line":166},[103,2260,230],{"class":109},[103,2262,233],{"class":113},[103,2264,236],{"class":134},[103,2266,239],{"class":134},[103,2268,131],{"class":130},[103,2270,191],{"class":134},[103,2272,2273,2275,2278,2280,2282,2284,2286,2288,2291,2293,2296,2298,2300,2303],{"class":105,"data-line":172,"line":172},[103,2274,142],{"class":141},[103,2276,2277],{"class":130},"slice ",[103,2279,275],{"class":109},[103,2281,131],{"class":130},[103,2283,1959],{"class":284},[103,2285,1964],{"class":284},[103,2287,848],{"class":109},[103,2289,2290],{"class":284},"{",[103,2292,1719],{"class":263},[103,2294,2295],{"class":130},", ",[103,2297,1789],{"class":263},[103,2299,2295],{"class":130},[103,2301,2302],{"class":263},"3",[103,2304,219],{"class":284},[103,2306,2307,2309,2311,2313,2315,2317,2319,2322],{"class":105,"data-line":177,"line":177},[103,2308,142],{"class":141},[103,2310,645],{"class":130},[103,2312,275],{"class":109},[103,2314,278],{"class":130},[103,2316,652],{"class":113},[103,2318,236],{"class":284},[103,2320,2321],{"class":130},"slice",[103,2323,169],{"class":284},[103,2325,2326,2328,2330,2333,2335,2338,2341,2344,2347,2350,2352,2354,2357,2360,2362],{"class":105,"data-line":194,"line":194},[103,2327,142],{"class":141},[103,2329,2034],{"class":109},[103,2331,2332],{"class":130}," i ",[103,2334,275],{"class":109},[103,2336,2337],{"class":263}," 0",[103,2339,2340],{"class":130},"; i ",[103,2342,2343],{"class":109},"\u003C",[103,2345,2346],{"class":130}," v1.",[103,2348,2349],{"class":113},"Len",[103,2351,236],{"class":284},[103,2353,239],{"class":284},[103,2355,2356],{"class":130},"; i",[103,2358,2359],{"class":109},"++",[103,2361,131],{"class":130},[103,2363,191],{"class":284},[103,2365,2366,2368,2370,2373,2375,2377,2380,2382,2385],{"class":105,"data-line":205,"line":205},[103,2367,142],{"class":141},[103,2369,342],{"class":141},[103,2371,2372],{"class":130},"elem ",[103,2374,275],{"class":109},[103,2376,2346],{"class":130},[103,2378,2379],{"class":113},"Index",[103,2381,236],{"class":311},[103,2383,2384],{"class":130},"i",[103,2386,169],{"class":311},[103,2388,2389,2391,2393,2395,2397,2399,2401,2403,2406,2409,2412,2414,2416],{"class":105,"data-line":216,"line":216},[103,2390,142],{"class":141},[103,2392,342],{"class":141},[103,2394,297],{"class":130},[103,2396,1044],{"class":113},[103,2398,236],{"class":311},[103,2400,146],{"class":145},[103,2402,1632],{"class":263},[103,2404,2405],{"class":145}," \"",[103,2407,2408],{"class":130},", elem.",[103,2410,2411],{"class":113},"Interface",[103,2413,236],{"class":134},[103,2415,239],{"class":134},[103,2417,169],{"class":311},[103,2419,2420,2422,2424],{"class":105,"data-line":222,"line":222},[103,2421,142],{"class":141},[103,2423,99],{"class":130},[103,2425,219],{"class":284},[103,2427,2428],{"class":105,"data-line":227,"line":227},[103,2429,121],{"emptyLinePlaceholder":120},[103,2431,2432,2434,2436,2438,2440],{"class":105,"data-line":246,"line":246},[103,2433,142],{"class":141},[103,2435,297],{"class":130},[103,2437,300],{"class":113},[103,2439,236],{"class":284},[103,2441,169],{"class":284},[103,2443,2444],{"class":105,"data-line":267,"line":267},[103,2445,121],{"emptyLinePlaceholder":120},[103,2447,2448,2450,2453,2455,2457,2459,2461,2463,2465,2467,2470,2472,2475,2477,2480],{"class":105,"data-line":292,"line":292},[103,2449,142],{"class":141},[103,2451,2452],{"class":130},"nums ",[103,2454,275],{"class":109},[103,2456,131],{"class":130},[103,2458,1959],{"class":284},[103,2460,2302],{"class":263},[103,2462,1964],{"class":284},[103,2464,848],{"class":109},[103,2466,2290],{"class":284},[103,2468,2469],{"class":263},"4",[103,2471,2295],{"class":130},[103,2473,2474],{"class":263},"5",[103,2476,2295],{"class":130},[103,2478,2479],{"class":263},"6",[103,2481,219],{"class":284},[103,2483,2484,2486,2488,2490,2492,2494,2496,2499],{"class":105,"data-line":318,"line":318},[103,2485,142],{"class":141},[103,2487,749],{"class":130},[103,2489,275],{"class":109},[103,2491,278],{"class":130},[103,2493,652],{"class":113},[103,2495,236],{"class":284},[103,2497,2498],{"class":130},"nums",[103,2500,169],{"class":284},[103,2502,2503,2505,2507,2509,2511,2513,2515,2517,2520,2522,2524,2526,2528,2530,2532],{"class":105,"data-line":323,"line":323},[103,2504,142],{"class":141},[103,2506,2034],{"class":109},[103,2508,2332],{"class":130},[103,2510,275],{"class":109},[103,2512,2337],{"class":263},[103,2514,2340],{"class":130},[103,2516,2343],{"class":109},[103,2518,2519],{"class":130}," v2.",[103,2521,2349],{"class":113},[103,2523,236],{"class":284},[103,2525,239],{"class":284},[103,2527,2356],{"class":130},[103,2529,2359],{"class":109},[103,2531,131],{"class":130},[103,2533,191],{"class":284},[103,2535,2536,2538,2540,2542,2544,2546,2548,2550,2552],{"class":105,"data-line":337,"line":337},[103,2537,142],{"class":141},[103,2539,342],{"class":141},[103,2541,2372],{"class":130},[103,2543,275],{"class":109},[103,2545,2519],{"class":130},[103,2547,2379],{"class":113},[103,2549,236],{"class":311},[103,2551,2384],{"class":130},[103,2553,169],{"class":311},[103,2555,2556,2558,2560,2562,2564,2566,2568,2570,2572,2574,2576,2578,2580],{"class":105,"data-line":354,"line":354},[103,2557,142],{"class":141},[103,2559,342],{"class":141},[103,2561,297],{"class":130},[103,2563,1044],{"class":113},[103,2565,236],{"class":311},[103,2567,146],{"class":145},[103,2569,1632],{"class":263},[103,2571,2405],{"class":145},[103,2573,2408],{"class":130},[103,2575,2411],{"class":113},[103,2577,236],{"class":134},[103,2579,239],{"class":134},[103,2581,169],{"class":311},[103,2583,2584,2586,2588],{"class":105,"data-line":369,"line":369},[103,2585,142],{"class":141},[103,2587,99],{"class":130},[103,2589,219],{"class":284},[103,2591,2592],{"class":105,"data-line":378,"line":378},[103,2593,219],{"class":134},[14,2595,426],{},[94,2597,2600],{"className":2598,"code":2599,"language":432,"meta":99},[430],"1 2 3\n4 5 6\n",[25,2601,2599],{"__ignoreMap":99},[14,2603,2604,849,2606,2608,2609,2612,2613,2616,2617,2620],{},[25,2605,671],{"code":671},[25,2607,774],{"code":774},"分别是切片和数组的反射值对象，通过",[25,2610,2611],{"code":2611},"Len()","获取到数组或切片中的元素个数，然后通过",[25,2614,2615],{"code":2615},"v.Index(i)","获取对应元素的",[25,2618,2619],{"code":2619},"reflect.value","对象，打印出其值",[2622,2623,2624],"blockquote",{},[14,2625,2626,493],{},[2627,2628,2629,2630,48,2632,2635],"strong",{},"注意：",[25,2631,2611],{"code":2611},[25,2633,2634],{"code":2634},"Index(i)","方法只能在原对象是切片，数组或字符串时才能调用，其他类型会 panic",[71,2637,2638],{"id":2638},"类型对象",[14,2640,2641],{},"reflect 包下跟类型相关的常用函数或方法",[1234,2643,2644,2652],{},[1237,2645,2646],{},[1240,2647,2648,2650],{},[1243,2649,1245],{},[1243,2651,1248],{},[1250,2653,2654,2662,2670,2680,2690,2700,2710,2720,2730],{},[1240,2655,2656,2660],{},[1255,2657,2658],{},[25,2659,1281],{"code":1281},[1255,2661,1284],{},[1240,2663,2664,2668],{},[1255,2665,2666],{},[25,2667,1291],{"code":1291},[1255,2669,1294],{},[1240,2671,2672,2677],{},[1255,2673,2674],{},[25,2675,2676],{"code":2676},"reflect.Value.Elem()",[1255,2678,2679],{},"根据指针获取对应的具体类型",[1240,2681,2682,2687],{},[1255,2683,2684],{},[25,2685,2686],{"code":2686},"reflect.Value.NumIn()",[1255,2688,2689],{},"获取函数反射类型的参数个数",[1240,2691,2692,2697],{},[1255,2693,2694],{},[25,2695,2696],{"code":2696},"reflect.Value.In(i)",[1255,2698,2699],{},"获取函数反射类型的第 i 个参数",[1240,2701,2702,2707],{},[1255,2703,2704],{},[25,2705,2706],{"code":2706},"reflect.Value.NumOut()",[1255,2708,2709],{},"获取函数反射类型的返回值个数",[1240,2711,2712,2717],{},[1255,2713,2714],{},[25,2715,2716],{"code":2716},"reflect.Value.Out(i)",[1255,2718,2719],{},"获取函数反射类型的第 i 个返回值",[1240,2721,2722,2727],{},[1255,2723,2724],{},[25,2725,2726],{"code":2726},"reflect.Value.NumMethod()",[1255,2728,2729],{},"获取 struct 上绑定的方法个数",[1240,2731,2732,2737],{},[1255,2733,2734],{},[25,2735,2736],{"code":2736},"reflect.Value.Method(i)",[1255,2738,2739],{},"获取 struct 上绑定的第 i 个方法",[1387,2741,2743],{"id":2742},"struct-反射类型","struct 反射类型",[94,2745,2747],{"className":96,"code":2746,"language":98,"meta":99,"style":99},"package main\n\nimport (\n    \"fmt\"\n    \"reflect\"\n)\n\ntype Student struct {\n    Name  string\n    Age   int\n    Score float64\n}\n\nfunc main() {\n    st := Student{\n       Name:  \"zhangsan\",\n       Age:   18,\n       Score: 90.5,\n    }\n    t := reflect.TypeOf(st)\n    fmt.Println(t.Name())\n    fmt.Println(t.Kind())\n    fmt.Println(t.NumField())\n    for i := 0; i \u003C t.NumField(); i++ {\n       fmt.Printf(\"field1 name is %s, field1 type is %s\\n\", t.Field(i).Name, t.Field(i).Type.String())\n    }\n}\n",[25,2748,2749,2755,2759,2767,2777,2787,2791,2795,2807,2815,2823,2831,2835,2839,2853,2865,2877,2889,2902,2910,2929,2950,2970,2990,3023,3081,3089],{"__ignoreMap":99},[103,2750,2751,2753],{"class":105,"data-line":106,"line":106},[103,2752,110],{"class":109},[103,2754,114],{"class":113},[103,2756,2757],{"class":105,"data-line":117,"line":117},[103,2758,121],{"emptyLinePlaceholder":120},[103,2760,2761,2763,2765],{"class":105,"data-line":124,"line":124},[103,2762,127],{"class":109},[103,2764,131],{"class":130},[103,2766,135],{"class":134},[103,2768,2769,2771,2773,2775],{"class":105,"data-line":138,"line":138},[103,2770,142],{"class":141},[103,2772,146],{"class":145},[103,2774,149],{"class":113},[103,2776,152],{"class":145},[103,2778,2779,2781,2783,2785],{"class":105,"data-line":155,"line":155},[103,2780,142],{"class":141},[103,2782,146],{"class":145},[103,2784,27],{"class":113},[103,2786,152],{"class":145},[103,2788,2789],{"class":105,"data-line":166,"line":166},[103,2790,169],{"class":134},[103,2792,2793],{"class":105,"data-line":172,"line":172},[103,2794,121],{"emptyLinePlaceholder":120},[103,2796,2797,2799,2801,2803,2805],{"class":105,"data-line":177,"line":177},[103,2798,180],{"class":109},[103,2800,183],{"class":113},[103,2802,186],{"class":109},[103,2804,131],{"class":130},[103,2806,191],{"class":134},[103,2808,2809,2811,2813],{"class":105,"data-line":194,"line":194},[103,2810,142],{"class":141},[103,2812,1460],{"class":130},[103,2814,202],{"class":109},[103,2816,2817,2819,2821],{"class":105,"data-line":205,"line":205},[103,2818,142],{"class":141},[103,2820,1469],{"class":130},[103,2822,213],{"class":109},[103,2824,2825,2827,2829],{"class":105,"data-line":216,"line":216},[103,2826,142],{"class":141},[103,2828,1478],{"class":130},[103,2830,1481],{"class":109},[103,2832,2833],{"class":105,"data-line":222,"line":222},[103,2834,219],{"class":134},[103,2836,2837],{"class":105,"data-line":227,"line":227},[103,2838,121],{"emptyLinePlaceholder":120},[103,2840,2841,2843,2845,2847,2849,2851],{"class":105,"data-line":246,"line":246},[103,2842,230],{"class":109},[103,2844,233],{"class":113},[103,2846,236],{"class":134},[103,2848,239],{"class":134},[103,2850,131],{"class":130},[103,2852,191],{"class":134},[103,2854,2855,2857,2859,2861,2863],{"class":105,"data-line":267,"line":267},[103,2856,142],{"class":141},[103,2858,328],{"class":130},[103,2860,275],{"class":109},[103,2862,183],{"class":113},[103,2864,191],{"class":284},[103,2866,2867,2869,2871,2873,2875],{"class":105,"data-line":292,"line":292},[103,2868,142],{"class":141},[103,2870,342],{"class":141},[103,2872,1528],{"class":130},[103,2874,348],{"class":145},[103,2876,351],{"class":130},[103,2878,2879,2881,2883,2885,2887],{"class":105,"data-line":318,"line":318},[103,2880,142],{"class":141},[103,2882,342],{"class":141},[103,2884,1541],{"class":130},[103,2886,364],{"class":263},[103,2888,351],{"class":130},[103,2890,2891,2893,2895,2897,2900],{"class":105,"data-line":323,"line":323},[103,2892,142],{"class":141},[103,2894,342],{"class":141},[103,2896,1554],{"class":130},[103,2898,2899],{"class":263},"90.5",[103,2901,351],{"class":130},[103,2903,2904,2906,2908],{"class":105,"data-line":337,"line":337},[103,2905,142],{"class":141},[103,2907,99],{"class":130},[103,2909,219],{"class":284},[103,2911,2912,2914,2917,2919,2921,2923,2925,2927],{"class":105,"data-line":354,"line":354},[103,2913,142],{"class":141},[103,2915,2916],{"class":130},"t ",[103,2918,275],{"class":109},[103,2920,278],{"class":130},[103,2922,281],{"class":113},[103,2924,236],{"class":284},[103,2926,394],{"class":130},[103,2928,169],{"class":284},[103,2930,2931,2933,2935,2937,2939,2942,2944,2946,2948],{"class":105,"data-line":369,"line":369},[103,2932,142],{"class":141},[103,2934,297],{"class":130},[103,2936,300],{"class":113},[103,2938,236],{"class":284},[103,2940,2941],{"class":130},"t.",[103,2943,1665],{"class":113},[103,2945,236],{"class":311},[103,2947,239],{"class":311},[103,2949,169],{"class":284},[103,2951,2952,2954,2956,2958,2960,2962,2964,2966,2968],{"class":105,"data-line":378,"line":378},[103,2953,142],{"class":141},[103,2955,297],{"class":130},[103,2957,300],{"class":113},[103,2959,236],{"class":284},[103,2961,2941],{"class":130},[103,2963,1143],{"class":113},[103,2965,236],{"class":311},[103,2967,239],{"class":311},[103,2969,169],{"class":284},[103,2971,2972,2974,2976,2978,2980,2982,2984,2986,2988],{"class":105,"data-line":399,"line":399},[103,2973,142],{"class":141},[103,2975,297],{"class":130},[103,2977,300],{"class":113},[103,2979,236],{"class":284},[103,2981,2941],{"class":130},[103,2983,1610],{"class":113},[103,2985,236],{"class":311},[103,2987,239],{"class":311},[103,2989,169],{"class":284},[103,2991,2992,2994,2996,2998,3000,3002,3004,3006,3009,3011,3013,3015,3017,3019,3021],{"class":105,"data-line":421,"line":421},[103,2993,142],{"class":141},[103,2995,2034],{"class":109},[103,2997,2332],{"class":130},[103,2999,275],{"class":109},[103,3001,2337],{"class":263},[103,3003,2340],{"class":130},[103,3005,2343],{"class":109},[103,3007,3008],{"class":130}," t.",[103,3010,1610],{"class":113},[103,3012,236],{"class":284},[103,3014,239],{"class":284},[103,3016,2356],{"class":130},[103,3018,2359],{"class":109},[103,3020,131],{"class":130},[103,3022,191],{"class":284},[103,3024,3025,3027,3029,3031,3033,3035,3038,3041,3044,3046,3048,3051,3053,3055,3057,3059,3062,3064,3066,3068,3070,3073,3075,3077,3079],{"class":105,"data-line":1761,"line":1761},[103,3026,142],{"class":141},[103,3028,342],{"class":141},[103,3030,297],{"class":130},[103,3032,1044],{"class":113},[103,3034,236],{"class":311},[103,3036,3037],{"class":145},"\"field1 name is ",[103,3039,3040],{"class":263},"%s",[103,3042,3043],{"class":145},", field1 type is ",[103,3045,1052],{"class":263},[103,3047,146],{"class":145},[103,3049,3050],{"class":130},", t.",[103,3052,1644],{"class":113},[103,3054,236],{"class":134},[103,3056,2384],{"class":130},[103,3058,239],{"class":134},[103,3060,3061],{"class":130},".Name, t.",[103,3063,1644],{"class":113},[103,3065,236],{"class":134},[103,3067,2384],{"class":130},[103,3069,239],{"class":134},[103,3071,3072],{"class":130},".Type.",[103,3074,308],{"class":113},[103,3076,236],{"class":134},[103,3078,239],{"class":134},[103,3080,169],{"class":311},[103,3082,3083,3085,3087],{"class":105,"data-line":1831,"line":1831},[103,3084,142],{"class":141},[103,3086,99],{"class":130},[103,3088,219],{"class":284},[103,3090,3092],{"class":105,"data-line":3091,"line":3091},27,[103,3093,219],{"class":134},[14,3095,426],{},[94,3097,3100],{"className":3098,"code":3099,"language":432,"meta":99},[430],"Student\nstruct\n3\nfield1 name is Name, field1 type is string\n",[25,3101,3099],{"__ignoreMap":99},[14,3103,1191,3104,2207,3106,3109,3110,1378,3112,3115,3116,3119,3120,3122,3123,3125,3126,3128,3129,3132,3133,48,3136,3138],{},[25,3105,47],{"code":47},[25,3107,3108],{"code":3108},"Name()","方法可以获取对应的",[25,3111,31],{"code":31},[25,3113,3114],{"code":3114},"Kind()","方法获取底层的数据种类，即",[25,3117,3118],{"code":3118},"kind","，跟",[25,3121,51],{"code":51},"一样，",[25,3124,47],{"code":47},"也提供了",[25,3127,1871],{"code":1871},"方法用于获取结构体对象中的字段个数，通过",[25,3130,3131],{"code":3131},"t.Field(i).Name","可以获取对应字段的名字。同样，",[25,3134,3135],{"code":3135},"Field(i)",[25,3137,1871],{"code":1871},"也只能对结构体反射使用",[1387,3140,3141],{"id":3141},"指针反射类型",[94,3143,3145],{"className":96,"code":3144,"language":98,"meta":99,"style":99},"package main\n\nimport (\n    \"fmt\"\n    \"reflect\"\n)\n\ntype Student struct {\n    Name  string\n    Age   int\n    Score float64\n}\n\nfunc main() {\n    st := &Student{\n       Name:  \"zhangsan\",\n       Age:   18,\n       Score: 90.5,\n    }\n    t := reflect.TypeOf(st)\n\n    fmt.Println(t.Kind())\n    fmt.Println(t.Elem().Name())     \u002F\u002F 这里一定要加Elem()，根据指针获取到具体类型后，才能或者具体的type名\n    fmt.Println(t.Elem().NumField()) \u002F\u002F 这里一定要加Elem()，根据指针获取到具体类型后，才能字段个数\n    for i := 0; i \u003C t.Elem().NumField(); i++ {\n       fmt.Printf(\"field1 name is %s, field1 type is %s\\n\", t.Elem().Field(i).Name, t.Elem().Field(i).Type.String())\n    }\n\n}\n",[25,3146,3147,3153,3157,3165,3175,3185,3189,3193,3205,3213,3221,3229,3233,3237,3251,3266,3278,3290,3302,3310,3328,3332,3352,3387,3420,3460,3528,3536,3541],{"__ignoreMap":99},[103,3148,3149,3151],{"class":105,"data-line":106,"line":106},[103,3150,110],{"class":109},[103,3152,114],{"class":113},[103,3154,3155],{"class":105,"data-line":117,"line":117},[103,3156,121],{"emptyLinePlaceholder":120},[103,3158,3159,3161,3163],{"class":105,"data-line":124,"line":124},[103,3160,127],{"class":109},[103,3162,131],{"class":130},[103,3164,135],{"class":134},[103,3166,3167,3169,3171,3173],{"class":105,"data-line":138,"line":138},[103,3168,142],{"class":141},[103,3170,146],{"class":145},[103,3172,149],{"class":113},[103,3174,152],{"class":145},[103,3176,3177,3179,3181,3183],{"class":105,"data-line":155,"line":155},[103,3178,142],{"class":141},[103,3180,146],{"class":145},[103,3182,27],{"class":113},[103,3184,152],{"class":145},[103,3186,3187],{"class":105,"data-line":166,"line":166},[103,3188,169],{"class":134},[103,3190,3191],{"class":105,"data-line":172,"line":172},[103,3192,121],{"emptyLinePlaceholder":120},[103,3194,3195,3197,3199,3201,3203],{"class":105,"data-line":177,"line":177},[103,3196,180],{"class":109},[103,3198,183],{"class":113},[103,3200,186],{"class":109},[103,3202,131],{"class":130},[103,3204,191],{"class":134},[103,3206,3207,3209,3211],{"class":105,"data-line":194,"line":194},[103,3208,142],{"class":141},[103,3210,1460],{"class":130},[103,3212,202],{"class":109},[103,3214,3215,3217,3219],{"class":105,"data-line":205,"line":205},[103,3216,142],{"class":141},[103,3218,1469],{"class":130},[103,3220,213],{"class":109},[103,3222,3223,3225,3227],{"class":105,"data-line":216,"line":216},[103,3224,142],{"class":141},[103,3226,1478],{"class":130},[103,3228,1481],{"class":109},[103,3230,3231],{"class":105,"data-line":222,"line":222},[103,3232,219],{"class":134},[103,3234,3235],{"class":105,"data-line":227,"line":227},[103,3236,121],{"emptyLinePlaceholder":120},[103,3238,3239,3241,3243,3245,3247,3249],{"class":105,"data-line":246,"line":246},[103,3240,230],{"class":109},[103,3242,233],{"class":113},[103,3244,236],{"class":134},[103,3246,239],{"class":134},[103,3248,131],{"class":130},[103,3250,191],{"class":134},[103,3252,3253,3255,3257,3259,3262,3264],{"class":105,"data-line":267,"line":267},[103,3254,142],{"class":141},[103,3256,328],{"class":130},[103,3258,275],{"class":109},[103,3260,3261],{"class":109}," &",[103,3263,492],{"class":113},[103,3265,191],{"class":284},[103,3267,3268,3270,3272,3274,3276],{"class":105,"data-line":292,"line":292},[103,3269,142],{"class":141},[103,3271,342],{"class":141},[103,3273,1528],{"class":130},[103,3275,348],{"class":145},[103,3277,351],{"class":130},[103,3279,3280,3282,3284,3286,3288],{"class":105,"data-line":318,"line":318},[103,3281,142],{"class":141},[103,3283,342],{"class":141},[103,3285,1541],{"class":130},[103,3287,364],{"class":263},[103,3289,351],{"class":130},[103,3291,3292,3294,3296,3298,3300],{"class":105,"data-line":323,"line":323},[103,3293,142],{"class":141},[103,3295,342],{"class":141},[103,3297,1554],{"class":130},[103,3299,2899],{"class":263},[103,3301,351],{"class":130},[103,3303,3304,3306,3308],{"class":105,"data-line":337,"line":337},[103,3305,142],{"class":141},[103,3307,99],{"class":130},[103,3309,219],{"class":284},[103,3311,3312,3314,3316,3318,3320,3322,3324,3326],{"class":105,"data-line":354,"line":354},[103,3313,142],{"class":141},[103,3315,2916],{"class":130},[103,3317,275],{"class":109},[103,3319,278],{"class":130},[103,3321,281],{"class":113},[103,3323,236],{"class":284},[103,3325,394],{"class":130},[103,3327,169],{"class":284},[103,3329,3330],{"class":105,"data-line":369,"line":369},[103,3331,121],{"emptyLinePlaceholder":120},[103,3333,3334,3336,3338,3340,3342,3344,3346,3348,3350],{"class":105,"data-line":378,"line":378},[103,3335,142],{"class":141},[103,3337,297],{"class":130},[103,3339,300],{"class":113},[103,3341,236],{"class":284},[103,3343,2941],{"class":130},[103,3345,1143],{"class":113},[103,3347,236],{"class":311},[103,3349,239],{"class":311},[103,3351,169],{"class":284},[103,3353,3354,3356,3358,3360,3362,3364,3367,3369,3371,3373,3375,3377,3379,3381,3384],{"class":105,"data-line":399,"line":399},[103,3355,142],{"class":141},[103,3357,297],{"class":130},[103,3359,300],{"class":113},[103,3361,236],{"class":284},[103,3363,2941],{"class":130},[103,3365,3366],{"class":113},"Elem",[103,3368,236],{"class":311},[103,3370,239],{"class":311},[103,3372,1654],{"class":130},[103,3374,1665],{"class":113},[103,3376,236],{"class":311},[103,3378,239],{"class":311},[103,3380,239],{"class":284},[103,3382,3383],{"class":130},"     ",[103,3385,3386],{"class":1010},"\u002F\u002F 这里一定要加Elem()，根据指针获取到具体类型后，才能或者具体的type名\n",[103,3388,3389,3391,3393,3395,3397,3399,3401,3403,3405,3407,3409,3411,3413,3415,3417],{"class":105,"data-line":421,"line":421},[103,3390,142],{"class":141},[103,3392,297],{"class":130},[103,3394,300],{"class":113},[103,3396,236],{"class":284},[103,3398,2941],{"class":130},[103,3400,3366],{"class":113},[103,3402,236],{"class":311},[103,3404,239],{"class":311},[103,3406,1654],{"class":130},[103,3408,1610],{"class":113},[103,3410,236],{"class":311},[103,3412,239],{"class":311},[103,3414,239],{"class":284},[103,3416,131],{"class":130},[103,3418,3419],{"class":1010},"\u002F\u002F 这里一定要加Elem()，根据指针获取到具体类型后，才能字段个数\n",[103,3421,3422,3424,3426,3428,3430,3432,3434,3436,3438,3440,3442,3444,3446,3448,3450,3452,3454,3456,3458],{"class":105,"data-line":1761,"line":1761},[103,3423,142],{"class":141},[103,3425,2034],{"class":109},[103,3427,2332],{"class":130},[103,3429,275],{"class":109},[103,3431,2337],{"class":263},[103,3433,2340],{"class":130},[103,3435,2343],{"class":109},[103,3437,3008],{"class":130},[103,3439,3366],{"class":113},[103,3441,236],{"class":284},[103,3443,239],{"class":284},[103,3445,1654],{"class":130},[103,3447,1610],{"class":113},[103,3449,236],{"class":284},[103,3451,239],{"class":284},[103,3453,2356],{"class":130},[103,3455,2359],{"class":109},[103,3457,131],{"class":130},[103,3459,191],{"class":284},[103,3461,3462,3464,3466,3468,3470,3472,3474,3476,3478,3480,3482,3484,3486,3488,3490,3492,3494,3496,3498,3500,3502,3504,3506,3508,3510,3512,3514,3516,3518,3520,3522,3524,3526],{"class":105,"data-line":1831,"line":1831},[103,3463,142],{"class":141},[103,3465,342],{"class":141},[103,3467,297],{"class":130},[103,3469,1044],{"class":113},[103,3471,236],{"class":311},[103,3473,3037],{"class":145},[103,3475,3040],{"class":263},[103,3477,3043],{"class":145},[103,3479,1052],{"class":263},[103,3481,146],{"class":145},[103,3483,3050],{"class":130},[103,3485,3366],{"class":113},[103,3487,236],{"class":134},[103,3489,239],{"class":134},[103,3491,1654],{"class":130},[103,3493,1644],{"class":113},[103,3495,236],{"class":134},[103,3497,2384],{"class":130},[103,3499,239],{"class":134},[103,3501,3061],{"class":130},[103,3503,3366],{"class":113},[103,3505,236],{"class":134},[103,3507,239],{"class":134},[103,3509,1654],{"class":130},[103,3511,1644],{"class":113},[103,3513,236],{"class":134},[103,3515,2384],{"class":130},[103,3517,239],{"class":134},[103,3519,3072],{"class":130},[103,3521,308],{"class":113},[103,3523,236],{"class":134},[103,3525,239],{"class":134},[103,3527,169],{"class":311},[103,3529,3530,3532,3534],{"class":105,"data-line":3091,"line":3091},[103,3531,142],{"class":141},[103,3533,99],{"class":130},[103,3535,219],{"class":284},[103,3537,3539],{"class":105,"data-line":3538,"line":3538},28,[103,3540,121],{"emptyLinePlaceholder":120},[103,3542,3544],{"class":105,"data-line":3543,"line":3543},29,[103,3545,219],{"class":134},[14,3547,426],{},[94,3549,3552],{"className":3550,"code":3551,"language":432,"meta":99},[430],"ptr\nStudent\n3\nfield1 name is Name, field1 type is string\nfield2 name is Age, field2 type is int\nfield3 name is Score, field3 type is float64\n",[25,3553,3551],{"__ignoreMap":99},[14,3555,3556,3557,3559,3560,3563,3564,3567,3568,3570,3571,3573,3574,3576,3577,3579,3580,3583],{},"可以看到，跟上面直接获取",[25,3558,440],{"code":440},"有一点点小小的区别，那就是",[25,3561,3562],{"code":3562},"fmt.Println(t.Kind())","打印出的是一个",[25,3565,3566],{"code":3566},"ptr","指针类型，而不再是",[25,3569,440],{"code":440},"类型，正是因为这里是一个",[25,3572,3566],{"code":3566},"，所以我们不能直接在这个",[25,3575,3566],{"code":3566},"上调用.Name()以及其他的.NumField()之类的方法，要根据",[25,3578,3566],{"code":3566},"的.Elem()获取到具体类型之后，才能用这些方法，否则程序就回报",[25,3581,3582],{"code":3582},"panic","，这点一定要注意",[1387,3585,3586],{"id":3586},"函数反射类型",[94,3588,3590],{"className":96,"code":3589,"language":98,"meta":99,"style":99},"package main\n\nimport (\n    \"fmt\"\n    \"reflect\"\n)\n\nfunc Add(num1, num2 int) (int, error) {\n    return num1 + num2, nil\n}\n\nfunc main() {\n\n    fmt.Println(\"input:\")\n    t := reflect.TypeOf(Add)\n    for i := 0; i \u003C t.NumIn(); i++ {\n       tIn := t.In(i)\n       fmt.Print(tIn.Name())\n       fmt.Printf(\" \")\n    }\n    fmt.Printf(\"\\n--------------------------------\")\n\n    fmt.Println(\"output:\")\n    for i := 0; i \u003C t.NumOut(); i++ {\n       tOut := t.Out(i)\n       fmt.Print(tOut.Name())\n       fmt.Print(\" \")\n    }\n\n}\n",[25,3591,3592,3598,3602,3610,3620,3630,3634,3638,3675,3693,3697,3701,3715,3719,3734,3753,3786,3808,3832,3849,3857,3877,3881,3896,3929,3951,3974,3990,3998,4002],{"__ignoreMap":99},[103,3593,3594,3596],{"class":105,"data-line":106,"line":106},[103,3595,110],{"class":109},[103,3597,114],{"class":113},[103,3599,3600],{"class":105,"data-line":117,"line":117},[103,3601,121],{"emptyLinePlaceholder":120},[103,3603,3604,3606,3608],{"class":105,"data-line":124,"line":124},[103,3605,127],{"class":109},[103,3607,131],{"class":130},[103,3609,135],{"class":134},[103,3611,3612,3614,3616,3618],{"class":105,"data-line":138,"line":138},[103,3613,142],{"class":141},[103,3615,146],{"class":145},[103,3617,149],{"class":113},[103,3619,152],{"class":145},[103,3621,3622,3624,3626,3628],{"class":105,"data-line":155,"line":155},[103,3623,142],{"class":141},[103,3625,146],{"class":145},[103,3627,27],{"class":113},[103,3629,152],{"class":145},[103,3631,3632],{"class":105,"data-line":166,"line":166},[103,3633,169],{"class":134},[103,3635,3636],{"class":105,"data-line":172,"line":172},[103,3637,121],{"emptyLinePlaceholder":120},[103,3639,3640,3642,3645,3647,3650,3652,3654,3656,3658,3660,3662,3664,3666,3669,3671,3673],{"class":105,"data-line":177,"line":177},[103,3641,230],{"class":109},[103,3643,3644],{"class":113}," Add",[103,3646,236],{"class":134},[103,3648,1033],{"class":3649},"s4XuR",[103,3651,2295],{"class":130},[103,3653,1003],{"class":3649},[103,3655,998],{"class":109},[103,3657,239],{"class":134},[103,3659,131],{"class":130},[103,3661,236],{"class":134},[103,3663,848],{"class":109},[103,3665,2295],{"class":130},[103,3667,3668],{"class":109},"error",[103,3670,239],{"class":134},[103,3672,131],{"class":130},[103,3674,191],{"class":134},[103,3676,3677,3679,3682,3684,3687,3690],{"class":105,"data-line":194,"line":194},[103,3678,142],{"class":141},[103,3680,3681],{"class":109},"return",[103,3683,958],{"class":130},[103,3685,3686],{"class":109},"+",[103,3688,3689],{"class":130}," num2, ",[103,3691,3692],{"class":263},"nil\n",[103,3694,3695],{"class":105,"data-line":205,"line":205},[103,3696,219],{"class":134},[103,3698,3699],{"class":105,"data-line":216,"line":216},[103,3700,121],{"emptyLinePlaceholder":120},[103,3702,3703,3705,3707,3709,3711,3713],{"class":105,"data-line":222,"line":222},[103,3704,230],{"class":109},[103,3706,233],{"class":113},[103,3708,236],{"class":134},[103,3710,239],{"class":134},[103,3712,131],{"class":130},[103,3714,191],{"class":134},[103,3716,3717],{"class":105,"data-line":227,"line":227},[103,3718,121],{"emptyLinePlaceholder":120},[103,3720,3721,3723,3725,3727,3729,3732],{"class":105,"data-line":246,"line":246},[103,3722,142],{"class":141},[103,3724,297],{"class":130},[103,3726,300],{"class":113},[103,3728,236],{"class":284},[103,3730,3731],{"class":145},"\"input:\"",[103,3733,169],{"class":284},[103,3735,3736,3738,3740,3742,3744,3746,3748,3751],{"class":105,"data-line":267,"line":267},[103,3737,142],{"class":141},[103,3739,2916],{"class":130},[103,3741,275],{"class":109},[103,3743,278],{"class":130},[103,3745,281],{"class":113},[103,3747,236],{"class":284},[103,3749,3750],{"class":130},"Add",[103,3752,169],{"class":284},[103,3754,3755,3757,3759,3761,3763,3765,3767,3769,3771,3774,3776,3778,3780,3782,3784],{"class":105,"data-line":292,"line":292},[103,3756,142],{"class":141},[103,3758,2034],{"class":109},[103,3760,2332],{"class":130},[103,3762,275],{"class":109},[103,3764,2337],{"class":263},[103,3766,2340],{"class":130},[103,3768,2343],{"class":109},[103,3770,3008],{"class":130},[103,3772,3773],{"class":113},"NumIn",[103,3775,236],{"class":284},[103,3777,239],{"class":284},[103,3779,2356],{"class":130},[103,3781,2359],{"class":109},[103,3783,131],{"class":130},[103,3785,191],{"class":284},[103,3787,3788,3790,3792,3795,3797,3799,3802,3804,3806],{"class":105,"data-line":318,"line":318},[103,3789,142],{"class":141},[103,3791,342],{"class":141},[103,3793,3794],{"class":130},"tIn ",[103,3796,275],{"class":109},[103,3798,3008],{"class":130},[103,3800,3801],{"class":113},"In",[103,3803,236],{"class":311},[103,3805,2384],{"class":130},[103,3807,169],{"class":311},[103,3809,3810,3812,3814,3816,3819,3821,3824,3826,3828,3830],{"class":105,"data-line":323,"line":323},[103,3811,142],{"class":141},[103,3813,342],{"class":141},[103,3815,297],{"class":130},[103,3817,3818],{"class":113},"Print",[103,3820,236],{"class":311},[103,3822,3823],{"class":130},"tIn.",[103,3825,1665],{"class":113},[103,3827,236],{"class":134},[103,3829,239],{"class":134},[103,3831,169],{"class":311},[103,3833,3834,3836,3838,3840,3842,3844,3847],{"class":105,"data-line":337,"line":337},[103,3835,142],{"class":141},[103,3837,342],{"class":141},[103,3839,297],{"class":130},[103,3841,1044],{"class":113},[103,3843,236],{"class":311},[103,3845,3846],{"class":145},"\" \"",[103,3848,169],{"class":311},[103,3850,3851,3853,3855],{"class":105,"data-line":354,"line":354},[103,3852,142],{"class":141},[103,3854,99],{"class":130},[103,3856,219],{"class":284},[103,3858,3859,3861,3863,3865,3867,3869,3872,3875],{"class":105,"data-line":369,"line":369},[103,3860,142],{"class":141},[103,3862,297],{"class":130},[103,3864,1044],{"class":113},[103,3866,236],{"class":284},[103,3868,146],{"class":145},[103,3870,3871],{"class":263},"\\n",[103,3873,3874],{"class":145},"--------------------------------\"",[103,3876,169],{"class":284},[103,3878,3879],{"class":105,"data-line":378,"line":378},[103,3880,121],{"emptyLinePlaceholder":120},[103,3882,3883,3885,3887,3889,3891,3894],{"class":105,"data-line":399,"line":399},[103,3884,142],{"class":141},[103,3886,297],{"class":130},[103,3888,300],{"class":113},[103,3890,236],{"class":284},[103,3892,3893],{"class":145},"\"output:\"",[103,3895,169],{"class":284},[103,3897,3898,3900,3902,3904,3906,3908,3910,3912,3914,3917,3919,3921,3923,3925,3927],{"class":105,"data-line":421,"line":421},[103,3899,142],{"class":141},[103,3901,2034],{"class":109},[103,3903,2332],{"class":130},[103,3905,275],{"class":109},[103,3907,2337],{"class":263},[103,3909,2340],{"class":130},[103,3911,2343],{"class":109},[103,3913,3008],{"class":130},[103,3915,3916],{"class":113},"NumOut",[103,3918,236],{"class":284},[103,3920,239],{"class":284},[103,3922,2356],{"class":130},[103,3924,2359],{"class":109},[103,3926,131],{"class":130},[103,3928,191],{"class":284},[103,3930,3931,3933,3935,3938,3940,3942,3945,3947,3949],{"class":105,"data-line":1761,"line":1761},[103,3932,142],{"class":141},[103,3934,342],{"class":141},[103,3936,3937],{"class":130},"tOut ",[103,3939,275],{"class":109},[103,3941,3008],{"class":130},[103,3943,3944],{"class":113},"Out",[103,3946,236],{"class":311},[103,3948,2384],{"class":130},[103,3950,169],{"class":311},[103,3952,3953,3955,3957,3959,3961,3963,3966,3968,3970,3972],{"class":105,"data-line":1831,"line":1831},[103,3954,142],{"class":141},[103,3956,342],{"class":141},[103,3958,297],{"class":130},[103,3960,3818],{"class":113},[103,3962,236],{"class":311},[103,3964,3965],{"class":130},"tOut.",[103,3967,1665],{"class":113},[103,3969,236],{"class":134},[103,3971,239],{"class":134},[103,3973,169],{"class":311},[103,3975,3976,3978,3980,3982,3984,3986,3988],{"class":105,"data-line":3091,"line":3091},[103,3977,142],{"class":141},[103,3979,342],{"class":141},[103,3981,297],{"class":130},[103,3983,3818],{"class":113},[103,3985,236],{"class":311},[103,3987,3846],{"class":145},[103,3989,169],{"class":311},[103,3991,3992,3994,3996],{"class":105,"data-line":3538,"line":3538},[103,3993,142],{"class":141},[103,3995,99],{"class":130},[103,3997,219],{"class":284},[103,3999,4000],{"class":105,"data-line":3543,"line":3543},[103,4001,121],{"emptyLinePlaceholder":120},[103,4003,4005],{"class":105,"data-line":4004,"line":4004},30,[103,4006,219],{"class":134},[14,4008,426],{},[94,4010,4013],{"className":4011,"code":4012,"language":432,"meta":99},[430],"input:\nint int\n--------------------------------\noutput:\nint error\n",[25,4014,4012],{"__ignoreMap":99},[14,4016,4017,4020,4021,4023,4024,4027,4028,4031],{},[25,4018,4019],{"code":4019},"t := reflect.TypeOf(Add)","获取到 Add 函数的",[25,4022,180],{"code":180},"类型，然后通过",[25,4025,4026],{"code":4026},"NumIn()","方法获得 Add 函数的参数个数，依次打印出参数的类型。通过",[25,4029,4030],{"code":4030},"NumOut()","方法获得 Add 函数的返回值个数，依次打印出返回值的类型",[1387,4033,4035],{"id":4034},"_324-反射获取-struct-方法","3.2.4 反射获取 struct 方法",[94,4037,4039],{"className":96,"code":4038,"language":98,"meta":99,"style":99},"package main\n\nimport (\n    \"fmt\"\n    \"reflect\"\n)\n\ntype Student struct {\n    Name  string\n    Age   int\n    Score float64\n}\n\nfunc (s *Student) GetName() string {\n    return s.Name\n}\n\nfunc (s *Student) SetName(name string) {\n    s.Name = name\n}\n\nfunc (s *Student) GetAge() int {\n    return s.Age\n}\n\nfunc (s *Student) SetAge(age int) {\n    s.Age = age\n}\n\nfunc (s *Student) GetScore() float64 {\n    return s.Score\n}\n\nfunc (s *Student) SetScore(score float64) {\n    s.Score = score\n}\n\nfunc main() {\n    st := &Student{\n       Name:  \"zhangsan\",\n       Age:   18,\n       Score: 90.5,\n    }\n    t := reflect.TypeOf(st)\n\n    for i := 0; i \u003C t.NumMethod(); i++ {\n       m := t.Method(i)\n       fmt.Printf(\"%+v\\n\", m)\n    }\n}\n",[25,4040,4041,4047,4051,4059,4069,4079,4083,4087,4099,4107,4115,4123,4127,4131,4167,4176,4180,4184,4219,4231,4235,4239,4272,4281,4285,4289,4323,4335,4339,4343,4377,4387,4392,4397,4433,4446,4451,4456,4471,4486,4499,4512,4525,4534,4553,4558,4592,4614,4639,4648],{"__ignoreMap":99},[103,4042,4043,4045],{"class":105,"data-line":106,"line":106},[103,4044,110],{"class":109},[103,4046,114],{"class":113},[103,4048,4049],{"class":105,"data-line":117,"line":117},[103,4050,121],{"emptyLinePlaceholder":120},[103,4052,4053,4055,4057],{"class":105,"data-line":124,"line":124},[103,4054,127],{"class":109},[103,4056,131],{"class":130},[103,4058,135],{"class":134},[103,4060,4061,4063,4065,4067],{"class":105,"data-line":138,"line":138},[103,4062,142],{"class":141},[103,4064,146],{"class":145},[103,4066,149],{"class":113},[103,4068,152],{"class":145},[103,4070,4071,4073,4075,4077],{"class":105,"data-line":155,"line":155},[103,4072,142],{"class":141},[103,4074,146],{"class":145},[103,4076,27],{"class":113},[103,4078,152],{"class":145},[103,4080,4081],{"class":105,"data-line":166,"line":166},[103,4082,169],{"class":134},[103,4084,4085],{"class":105,"data-line":172,"line":172},[103,4086,121],{"emptyLinePlaceholder":120},[103,4088,4089,4091,4093,4095,4097],{"class":105,"data-line":177,"line":177},[103,4090,180],{"class":109},[103,4092,183],{"class":113},[103,4094,186],{"class":109},[103,4096,131],{"class":130},[103,4098,191],{"class":134},[103,4100,4101,4103,4105],{"class":105,"data-line":194,"line":194},[103,4102,142],{"class":141},[103,4104,1460],{"class":130},[103,4106,202],{"class":109},[103,4108,4109,4111,4113],{"class":105,"data-line":205,"line":205},[103,4110,142],{"class":141},[103,4112,1469],{"class":130},[103,4114,213],{"class":109},[103,4116,4117,4119,4121],{"class":105,"data-line":216,"line":216},[103,4118,142],{"class":141},[103,4120,1478],{"class":130},[103,4122,1481],{"class":109},[103,4124,4125],{"class":105,"data-line":222,"line":222},[103,4126,219],{"class":134},[103,4128,4129],{"class":105,"data-line":227,"line":227},[103,4130,121],{"emptyLinePlaceholder":120},[103,4132,4133,4135,4137,4139,4142,4145,4147,4149,4151,4154,4156,4158,4160,4163,4165],{"class":105,"data-line":246,"line":246},[103,4134,230],{"class":109},[103,4136,131],{"class":130},[103,4138,236],{"class":134},[103,4140,4141],{"class":3649},"s ",[103,4143,4144],{"class":109},"*",[103,4146,492],{"class":113},[103,4148,239],{"class":134},[103,4150,131],{"class":130},[103,4152,4153],{"class":113},"GetName",[103,4155,236],{"class":134},[103,4157,239],{"class":134},[103,4159,131],{"class":130},[103,4161,4162],{"class":109},"string",[103,4164,131],{"class":130},[103,4166,191],{"class":134},[103,4168,4169,4171,4173],{"class":105,"data-line":267,"line":267},[103,4170,142],{"class":141},[103,4172,3681],{"class":109},[103,4174,4175],{"class":130}," s.Name\n",[103,4177,4178],{"class":105,"data-line":292,"line":292},[103,4179,219],{"class":134},[103,4181,4182],{"class":105,"data-line":318,"line":318},[103,4183,121],{"emptyLinePlaceholder":120},[103,4185,4186,4188,4190,4192,4194,4196,4198,4200,4202,4205,4207,4210,4213,4215,4217],{"class":105,"data-line":323,"line":323},[103,4187,230],{"class":109},[103,4189,131],{"class":130},[103,4191,236],{"class":134},[103,4193,4141],{"class":3649},[103,4195,4144],{"class":109},[103,4197,492],{"class":113},[103,4199,239],{"class":134},[103,4201,131],{"class":130},[103,4203,4204],{"class":113},"SetName",[103,4206,236],{"class":134},[103,4208,4209],{"class":3649},"name",[103,4211,4212],{"class":109}," string",[103,4214,239],{"class":134},[103,4216,131],{"class":130},[103,4218,191],{"class":134},[103,4220,4221,4223,4226,4228],{"class":105,"data-line":337,"line":337},[103,4222,142],{"class":141},[103,4224,4225],{"class":130},"s.Name ",[103,4227,995],{"class":109},[103,4229,4230],{"class":130}," name\n",[103,4232,4233],{"class":105,"data-line":354,"line":354},[103,4234,219],{"class":134},[103,4236,4237],{"class":105,"data-line":369,"line":369},[103,4238,121],{"emptyLinePlaceholder":120},[103,4240,4241,4243,4245,4247,4249,4251,4253,4255,4257,4260,4262,4264,4266,4268,4270],{"class":105,"data-line":378,"line":378},[103,4242,230],{"class":109},[103,4244,131],{"class":130},[103,4246,236],{"class":134},[103,4248,4141],{"class":3649},[103,4250,4144],{"class":109},[103,4252,492],{"class":113},[103,4254,239],{"class":134},[103,4256,131],{"class":130},[103,4258,4259],{"class":113},"GetAge",[103,4261,236],{"class":134},[103,4263,239],{"class":134},[103,4265,131],{"class":130},[103,4267,848],{"class":109},[103,4269,131],{"class":130},[103,4271,191],{"class":134},[103,4273,4274,4276,4278],{"class":105,"data-line":399,"line":399},[103,4275,142],{"class":141},[103,4277,3681],{"class":109},[103,4279,4280],{"class":130}," s.Age\n",[103,4282,4283],{"class":105,"data-line":421,"line":421},[103,4284,219],{"class":134},[103,4286,4287],{"class":105,"data-line":1761,"line":1761},[103,4288,121],{"emptyLinePlaceholder":120},[103,4290,4291,4293,4295,4297,4299,4301,4303,4305,4307,4310,4312,4315,4317,4319,4321],{"class":105,"data-line":1831,"line":1831},[103,4292,230],{"class":109},[103,4294,131],{"class":130},[103,4296,236],{"class":134},[103,4298,4141],{"class":3649},[103,4300,4144],{"class":109},[103,4302,492],{"class":113},[103,4304,239],{"class":134},[103,4306,131],{"class":130},[103,4308,4309],{"class":113},"SetAge",[103,4311,236],{"class":134},[103,4313,4314],{"class":3649},"age",[103,4316,998],{"class":109},[103,4318,239],{"class":134},[103,4320,131],{"class":130},[103,4322,191],{"class":134},[103,4324,4325,4327,4330,4332],{"class":105,"data-line":3091,"line":3091},[103,4326,142],{"class":141},[103,4328,4329],{"class":130},"s.Age ",[103,4331,995],{"class":109},[103,4333,4334],{"class":130}," age\n",[103,4336,4337],{"class":105,"data-line":3538,"line":3538},[103,4338,219],{"class":134},[103,4340,4341],{"class":105,"data-line":3543,"line":3543},[103,4342,121],{"emptyLinePlaceholder":120},[103,4344,4345,4347,4349,4351,4353,4355,4357,4359,4361,4364,4366,4368,4370,4373,4375],{"class":105,"data-line":4004,"line":4004},[103,4346,230],{"class":109},[103,4348,131],{"class":130},[103,4350,236],{"class":134},[103,4352,4141],{"class":3649},[103,4354,4144],{"class":109},[103,4356,492],{"class":113},[103,4358,239],{"class":134},[103,4360,131],{"class":130},[103,4362,4363],{"class":113},"GetScore",[103,4365,236],{"class":134},[103,4367,239],{"class":134},[103,4369,131],{"class":130},[103,4371,4372],{"class":109},"float64",[103,4374,131],{"class":130},[103,4376,191],{"class":134},[103,4378,4380,4382,4384],{"class":105,"data-line":4379,"line":4379},31,[103,4381,142],{"class":141},[103,4383,3681],{"class":109},[103,4385,4386],{"class":130}," s.Score\n",[103,4388,4390],{"class":105,"data-line":4389,"line":4389},32,[103,4391,219],{"class":134},[103,4393,4395],{"class":105,"data-line":4394,"line":4394},33,[103,4396,121],{"emptyLinePlaceholder":120},[103,4398,4400,4402,4404,4406,4408,4410,4412,4414,4416,4419,4421,4424,4427,4429,4431],{"class":105,"data-line":4399,"line":4399},34,[103,4401,230],{"class":109},[103,4403,131],{"class":130},[103,4405,236],{"class":134},[103,4407,4141],{"class":3649},[103,4409,4144],{"class":109},[103,4411,492],{"class":113},[103,4413,239],{"class":134},[103,4415,131],{"class":130},[103,4417,4418],{"class":113},"SetScore",[103,4420,236],{"class":134},[103,4422,4423],{"class":3649},"score",[103,4425,4426],{"class":109}," float64",[103,4428,239],{"class":134},[103,4430,131],{"class":130},[103,4432,191],{"class":134},[103,4434,4436,4438,4441,4443],{"class":105,"data-line":4435,"line":4435},35,[103,4437,142],{"class":141},[103,4439,4440],{"class":130},"s.Score ",[103,4442,995],{"class":109},[103,4444,4445],{"class":130}," score\n",[103,4447,4449],{"class":105,"data-line":4448,"line":4448},36,[103,4450,219],{"class":134},[103,4452,4454],{"class":105,"data-line":4453,"line":4453},37,[103,4455,121],{"emptyLinePlaceholder":120},[103,4457,4459,4461,4463,4465,4467,4469],{"class":105,"data-line":4458,"line":4458},38,[103,4460,230],{"class":109},[103,4462,233],{"class":113},[103,4464,236],{"class":134},[103,4466,239],{"class":134},[103,4468,131],{"class":130},[103,4470,191],{"class":134},[103,4472,4474,4476,4478,4480,4482,4484],{"class":105,"data-line":4473,"line":4473},39,[103,4475,142],{"class":141},[103,4477,328],{"class":130},[103,4479,275],{"class":109},[103,4481,3261],{"class":109},[103,4483,492],{"class":113},[103,4485,191],{"class":284},[103,4487,4489,4491,4493,4495,4497],{"class":105,"data-line":4488,"line":4488},40,[103,4490,142],{"class":141},[103,4492,342],{"class":141},[103,4494,1528],{"class":130},[103,4496,348],{"class":145},[103,4498,351],{"class":130},[103,4500,4502,4504,4506,4508,4510],{"class":105,"data-line":4501,"line":4501},41,[103,4503,142],{"class":141},[103,4505,342],{"class":141},[103,4507,1541],{"class":130},[103,4509,364],{"class":263},[103,4511,351],{"class":130},[103,4513,4515,4517,4519,4521,4523],{"class":105,"data-line":4514,"line":4514},42,[103,4516,142],{"class":141},[103,4518,342],{"class":141},[103,4520,1554],{"class":130},[103,4522,2899],{"class":263},[103,4524,351],{"class":130},[103,4526,4528,4530,4532],{"class":105,"data-line":4527,"line":4527},43,[103,4529,142],{"class":141},[103,4531,99],{"class":130},[103,4533,219],{"class":284},[103,4535,4537,4539,4541,4543,4545,4547,4549,4551],{"class":105,"data-line":4536,"line":4536},44,[103,4538,142],{"class":141},[103,4540,2916],{"class":130},[103,4542,275],{"class":109},[103,4544,278],{"class":130},[103,4546,281],{"class":113},[103,4548,236],{"class":284},[103,4550,394],{"class":130},[103,4552,169],{"class":284},[103,4554,4556],{"class":105,"data-line":4555,"line":4555},45,[103,4557,121],{"emptyLinePlaceholder":120},[103,4559,4561,4563,4565,4567,4569,4571,4573,4575,4577,4580,4582,4584,4586,4588,4590],{"class":105,"data-line":4560,"line":4560},46,[103,4562,142],{"class":141},[103,4564,2034],{"class":109},[103,4566,2332],{"class":130},[103,4568,275],{"class":109},[103,4570,2337],{"class":263},[103,4572,2340],{"class":130},[103,4574,2343],{"class":109},[103,4576,3008],{"class":130},[103,4578,4579],{"class":113},"NumMethod",[103,4581,236],{"class":284},[103,4583,239],{"class":284},[103,4585,2356],{"class":130},[103,4587,2359],{"class":109},[103,4589,131],{"class":130},[103,4591,191],{"class":284},[103,4593,4595,4597,4599,4601,4603,4605,4608,4610,4612],{"class":105,"data-line":4594,"line":4594},47,[103,4596,142],{"class":141},[103,4598,342],{"class":141},[103,4600,1951],{"class":130},[103,4602,275],{"class":109},[103,4604,3008],{"class":130},[103,4606,4607],{"class":113},"Method",[103,4609,236],{"class":311},[103,4611,2384],{"class":130},[103,4613,169],{"class":311},[103,4615,4617,4619,4621,4623,4625,4627,4629,4632,4634,4637],{"class":105,"data-line":4616,"line":4616},48,[103,4618,142],{"class":141},[103,4620,342],{"class":141},[103,4622,297],{"class":130},[103,4624,1044],{"class":113},[103,4626,236],{"class":311},[103,4628,146],{"class":145},[103,4630,4631],{"class":263},"%+v\\n",[103,4633,146],{"class":145},[103,4635,4636],{"class":130},", m",[103,4638,169],{"class":311},[103,4640,4642,4644,4646],{"class":105,"data-line":4641,"line":4641},49,[103,4643,142],{"class":141},[103,4645,99],{"class":130},[103,4647,219],{"class":284},[103,4649,4651],{"class":105,"data-line":4650,"line":4650},50,[103,4652,219],{"class":134},[14,4654,426],{},[94,4656,4659],{"className":4657,"code":4658,"language":432,"meta":99},[430],"{GetName func(*main.Student) string}\n{SetName func(*main.Student, string)}\n{GetAge func(*main.Student) int}\n{SetAge func(*main.Student, int)}\n{GetScore func(*main.Student) float64}\n{SetScore func(*main.Student, float64)}\n",[25,4660,4658],{"__ignoreMap":99},[4662,4663,4664,4671],"ul",{},[4665,4666,4667,4670],"li",{},[25,4668,4669],{"code":4669},"reflect.Type.NumMethod()","：返回 struct 所绑定的的方法个数",[4665,4672,4673,4676,4677,1333],{},[25,4674,4675],{"code":4675},"reflect.Type.Method(i)","：返回第 i 个方法的",[25,4678,4679],{"code":4679},"reflect.Method",[14,4681,4682,4684,4685,4688],{},[25,4683,4679],{"code":4679},"定义在",[25,4686,4687],{"code":4687},"src\u002Freflect\u002Ftype.go","文件：",[94,4690,4692],{"className":96,"code":4691,"language":98,"meta":99,"style":99},"type Method struct {\n  Name    string \u002F\u002F 方法名\n  PkgPath string\n  Type  Type  \u002F\u002F 方法类型（\n  Func  Value \u002F\u002F 方法值（方法的接收器作为第一个参数）\n  Index int   \u002F\u002F 是结构体中的第几个方法\n}\n",[25,4693,4694,4707,4720,4729,4741,4753,4765],{"__ignoreMap":99},[103,4695,4696,4698,4701,4703,4705],{"class":105,"data-line":106,"line":106},[103,4697,180],{"class":109},[103,4699,4700],{"class":113}," Method",[103,4702,186],{"class":109},[103,4704,131],{"class":130},[103,4706,191],{"class":134},[103,4708,4709,4712,4715,4717],{"class":105,"data-line":117,"line":117},[103,4710,4711],{"class":141},"  ",[103,4713,4714],{"class":130},"Name    ",[103,4716,4162],{"class":109},[103,4718,4719],{"class":1010}," \u002F\u002F 方法名\n",[103,4721,4722,4724,4727],{"class":105,"data-line":124,"line":124},[103,4723,4711],{"class":141},[103,4725,4726],{"class":130},"PkgPath ",[103,4728,202],{"class":109},[103,4730,4731,4733,4736,4738],{"class":105,"data-line":138,"line":138},[103,4732,4711],{"class":141},[103,4734,4735],{"class":130},"Type  ",[103,4737,31],{"class":113},[103,4739,4740],{"class":1010},"  \u002F\u002F 方法类型（\n",[103,4742,4743,4745,4748,4750],{"class":105,"data-line":155,"line":155},[103,4744,4711],{"class":141},[103,4746,4747],{"class":130},"Func  ",[103,4749,35],{"class":113},[103,4751,4752],{"class":1010}," \u002F\u002F 方法值（方法的接收器作为第一个参数）\n",[103,4754,4755,4757,4760,4762],{"class":105,"data-line":166,"line":166},[103,4756,4711],{"class":141},[103,4758,4759],{"class":130},"Index ",[103,4761,848],{"class":109},[103,4763,4764],{"class":1010},"   \u002F\u002F 是结构体中的第几个方法\n",[103,4766,4767],{"class":105,"data-line":172,"line":172},[103,4768,219],{"class":134},[14,4770,4771,4772,4774,4775,4777],{},"所以，通过",[25,4773,4679],{"code":4679},"对象，我们可以获取到",[25,4776,440],{"code":440},"所绑定的对应方法的方法名，方法类型等信息",[71,4779,4780],{"id":4780},"通过反射调用方法",[14,4782,4783,4784,4786,4787,4789,4790,4792,4793,4795,4796,4799,4800,4803,4804,4806,4807,4809],{},"在上一小节我们知道了",[25,4785,4675],{"code":4675},"可以获取到",[25,4788,440],{"code":440},"所绑定的具体的方法对象",[25,4791,4679],{"code":4679},"，通过这个对象，我们不仅可以获取方法的详细信息，还可以动态的调用方法。\n其实在",[25,4794,51],{"code":51},"里我们也可以使用",[25,4797,4798],{"code":4798},"NumMethod()","\u002F",[25,4801,4802],{"code":4802},"Method(i)","方法获取到对应的方法信息，不同的是",[25,4805,2736],{"code":2736},"返回的使一个",[25,4808,51],{"code":51},"对象，但是同样可以根据这个对象来动态调用方法，只是两者调用方法的方式有所区别\n请看具体例子：",[94,4811,4813],{"className":96,"code":4812,"language":98,"meta":99,"style":99},"package main\n\nimport (\n    \"fmt\"\n    \"reflect\"\n)\n\ntype Student struct {\n    Name  string\n    Age   int\n    Score float64\n}\n\nfunc (s *Student) GetName() string {\n    return s.Name\n}\n\nfunc (s *Student) SetName(name string) {\n    s.Name = name\n}\n\nfunc (s *Student) GetAge() int {\n    return s.Age\n}\n\nfunc (s *Student) SetAge(age int) {\n    s.Age = age\n}\n\nfunc (s *Student) GetScore() float64 {\n    return s.Score\n}\n\nfunc (s *Student) SetScore(score float64) {\n    s.Score = score\n}\n\nfunc main() {\n    st := &Student{\n       Name:  \"zhangsan\",\n       Age:   18,\n       Score: 90.5,\n    }\n    fmt.Printf(\"st === %+v\\n\", st)\n\n    t := reflect.TypeOf(st)\n    v := reflect.ValueOf(st)\n\n    m1, ok := t.MethodByName(\"SetName\")  \u002F\u002F 获取SetName方法\n    fmt.Printf(\"t get func by name:%t\\n\", ok)\n\n    argsV1 := make([]reflect.Value, 0)\n    argsV1 = append(argsV1, v)\n    argsV1 = append(argsV1, reflect.ValueOf(\"lisi\"))\n    m1.Func.Call(argsV1)       \u002F\u002F\n    fmt.Printf(\"st === %+v\\n\", st)\n\n    m2 := v.MethodByName(\"SetName\")    \u002F\u002F 获取SetName方法\n    argsV2 := make([]reflect.Value, 0)\n    argsV2 = append(argsV2, reflect.ValueOf(\"wangwu\"))\n    m2.Call(argsV2)\n    fmt.Printf(\"st === %+v\\n\", st)\n}\n",[25,4814,4815,4821,4825,4833,4843,4853,4857,4861,4873,4881,4889,4897,4901,4905,4937,4945,4949,4953,4985,4995,4999,5003,5035,5043,5047,5051,5083,5093,5097,5101,5133,5141,5145,5149,5181,5191,5195,5199,5213,5227,5239,5251,5263,5271,5293,5297,5315,5333,5337,5363,5386,5391,5422,5441,5468,5492,5513,5518,5542,5572,5599,5616,5637],{"__ignoreMap":99},[103,4816,4817,4819],{"class":105,"data-line":106,"line":106},[103,4818,110],{"class":109},[103,4820,114],{"class":113},[103,4822,4823],{"class":105,"data-line":117,"line":117},[103,4824,121],{"emptyLinePlaceholder":120},[103,4826,4827,4829,4831],{"class":105,"data-line":124,"line":124},[103,4828,127],{"class":109},[103,4830,131],{"class":130},[103,4832,135],{"class":134},[103,4834,4835,4837,4839,4841],{"class":105,"data-line":138,"line":138},[103,4836,142],{"class":141},[103,4838,146],{"class":145},[103,4840,149],{"class":113},[103,4842,152],{"class":145},[103,4844,4845,4847,4849,4851],{"class":105,"data-line":155,"line":155},[103,4846,142],{"class":141},[103,4848,146],{"class":145},[103,4850,27],{"class":113},[103,4852,152],{"class":145},[103,4854,4855],{"class":105,"data-line":166,"line":166},[103,4856,169],{"class":134},[103,4858,4859],{"class":105,"data-line":172,"line":172},[103,4860,121],{"emptyLinePlaceholder":120},[103,4862,4863,4865,4867,4869,4871],{"class":105,"data-line":177,"line":177},[103,4864,180],{"class":109},[103,4866,183],{"class":113},[103,4868,186],{"class":109},[103,4870,131],{"class":130},[103,4872,191],{"class":134},[103,4874,4875,4877,4879],{"class":105,"data-line":194,"line":194},[103,4876,142],{"class":141},[103,4878,1460],{"class":130},[103,4880,202],{"class":109},[103,4882,4883,4885,4887],{"class":105,"data-line":205,"line":205},[103,4884,142],{"class":141},[103,4886,1469],{"class":130},[103,4888,213],{"class":109},[103,4890,4891,4893,4895],{"class":105,"data-line":216,"line":216},[103,4892,142],{"class":141},[103,4894,1478],{"class":130},[103,4896,1481],{"class":109},[103,4898,4899],{"class":105,"data-line":222,"line":222},[103,4900,219],{"class":134},[103,4902,4903],{"class":105,"data-line":227,"line":227},[103,4904,121],{"emptyLinePlaceholder":120},[103,4906,4907,4909,4911,4913,4915,4917,4919,4921,4923,4925,4927,4929,4931,4933,4935],{"class":105,"data-line":246,"line":246},[103,4908,230],{"class":109},[103,4910,131],{"class":130},[103,4912,236],{"class":134},[103,4914,4141],{"class":3649},[103,4916,4144],{"class":109},[103,4918,492],{"class":113},[103,4920,239],{"class":134},[103,4922,131],{"class":130},[103,4924,4153],{"class":113},[103,4926,236],{"class":134},[103,4928,239],{"class":134},[103,4930,131],{"class":130},[103,4932,4162],{"class":109},[103,4934,131],{"class":130},[103,4936,191],{"class":134},[103,4938,4939,4941,4943],{"class":105,"data-line":267,"line":267},[103,4940,142],{"class":141},[103,4942,3681],{"class":109},[103,4944,4175],{"class":130},[103,4946,4947],{"class":105,"data-line":292,"line":292},[103,4948,219],{"class":134},[103,4950,4951],{"class":105,"data-line":318,"line":318},[103,4952,121],{"emptyLinePlaceholder":120},[103,4954,4955,4957,4959,4961,4963,4965,4967,4969,4971,4973,4975,4977,4979,4981,4983],{"class":105,"data-line":323,"line":323},[103,4956,230],{"class":109},[103,4958,131],{"class":130},[103,4960,236],{"class":134},[103,4962,4141],{"class":3649},[103,4964,4144],{"class":109},[103,4966,492],{"class":113},[103,4968,239],{"class":134},[103,4970,131],{"class":130},[103,4972,4204],{"class":113},[103,4974,236],{"class":134},[103,4976,4209],{"class":3649},[103,4978,4212],{"class":109},[103,4980,239],{"class":134},[103,4982,131],{"class":130},[103,4984,191],{"class":134},[103,4986,4987,4989,4991,4993],{"class":105,"data-line":337,"line":337},[103,4988,142],{"class":141},[103,4990,4225],{"class":130},[103,4992,995],{"class":109},[103,4994,4230],{"class":130},[103,4996,4997],{"class":105,"data-line":354,"line":354},[103,4998,219],{"class":134},[103,5000,5001],{"class":105,"data-line":369,"line":369},[103,5002,121],{"emptyLinePlaceholder":120},[103,5004,5005,5007,5009,5011,5013,5015,5017,5019,5021,5023,5025,5027,5029,5031,5033],{"class":105,"data-line":378,"line":378},[103,5006,230],{"class":109},[103,5008,131],{"class":130},[103,5010,236],{"class":134},[103,5012,4141],{"class":3649},[103,5014,4144],{"class":109},[103,5016,492],{"class":113},[103,5018,239],{"class":134},[103,5020,131],{"class":130},[103,5022,4259],{"class":113},[103,5024,236],{"class":134},[103,5026,239],{"class":134},[103,5028,131],{"class":130},[103,5030,848],{"class":109},[103,5032,131],{"class":130},[103,5034,191],{"class":134},[103,5036,5037,5039,5041],{"class":105,"data-line":399,"line":399},[103,5038,142],{"class":141},[103,5040,3681],{"class":109},[103,5042,4280],{"class":130},[103,5044,5045],{"class":105,"data-line":421,"line":421},[103,5046,219],{"class":134},[103,5048,5049],{"class":105,"data-line":1761,"line":1761},[103,5050,121],{"emptyLinePlaceholder":120},[103,5052,5053,5055,5057,5059,5061,5063,5065,5067,5069,5071,5073,5075,5077,5079,5081],{"class":105,"data-line":1831,"line":1831},[103,5054,230],{"class":109},[103,5056,131],{"class":130},[103,5058,236],{"class":134},[103,5060,4141],{"class":3649},[103,5062,4144],{"class":109},[103,5064,492],{"class":113},[103,5066,239],{"class":134},[103,5068,131],{"class":130},[103,5070,4309],{"class":113},[103,5072,236],{"class":134},[103,5074,4314],{"class":3649},[103,5076,998],{"class":109},[103,5078,239],{"class":134},[103,5080,131],{"class":130},[103,5082,191],{"class":134},[103,5084,5085,5087,5089,5091],{"class":105,"data-line":3091,"line":3091},[103,5086,142],{"class":141},[103,5088,4329],{"class":130},[103,5090,995],{"class":109},[103,5092,4334],{"class":130},[103,5094,5095],{"class":105,"data-line":3538,"line":3538},[103,5096,219],{"class":134},[103,5098,5099],{"class":105,"data-line":3543,"line":3543},[103,5100,121],{"emptyLinePlaceholder":120},[103,5102,5103,5105,5107,5109,5111,5113,5115,5117,5119,5121,5123,5125,5127,5129,5131],{"class":105,"data-line":4004,"line":4004},[103,5104,230],{"class":109},[103,5106,131],{"class":130},[103,5108,236],{"class":134},[103,5110,4141],{"class":3649},[103,5112,4144],{"class":109},[103,5114,492],{"class":113},[103,5116,239],{"class":134},[103,5118,131],{"class":130},[103,5120,4363],{"class":113},[103,5122,236],{"class":134},[103,5124,239],{"class":134},[103,5126,131],{"class":130},[103,5128,4372],{"class":109},[103,5130,131],{"class":130},[103,5132,191],{"class":134},[103,5134,5135,5137,5139],{"class":105,"data-line":4379,"line":4379},[103,5136,142],{"class":141},[103,5138,3681],{"class":109},[103,5140,4386],{"class":130},[103,5142,5143],{"class":105,"data-line":4389,"line":4389},[103,5144,219],{"class":134},[103,5146,5147],{"class":105,"data-line":4394,"line":4394},[103,5148,121],{"emptyLinePlaceholder":120},[103,5150,5151,5153,5155,5157,5159,5161,5163,5165,5167,5169,5171,5173,5175,5177,5179],{"class":105,"data-line":4399,"line":4399},[103,5152,230],{"class":109},[103,5154,131],{"class":130},[103,5156,236],{"class":134},[103,5158,4141],{"class":3649},[103,5160,4144],{"class":109},[103,5162,492],{"class":113},[103,5164,239],{"class":134},[103,5166,131],{"class":130},[103,5168,4418],{"class":113},[103,5170,236],{"class":134},[103,5172,4423],{"class":3649},[103,5174,4426],{"class":109},[103,5176,239],{"class":134},[103,5178,131],{"class":130},[103,5180,191],{"class":134},[103,5182,5183,5185,5187,5189],{"class":105,"data-line":4435,"line":4435},[103,5184,142],{"class":141},[103,5186,4440],{"class":130},[103,5188,995],{"class":109},[103,5190,4445],{"class":130},[103,5192,5193],{"class":105,"data-line":4448,"line":4448},[103,5194,219],{"class":134},[103,5196,5197],{"class":105,"data-line":4453,"line":4453},[103,5198,121],{"emptyLinePlaceholder":120},[103,5200,5201,5203,5205,5207,5209,5211],{"class":105,"data-line":4458,"line":4458},[103,5202,230],{"class":109},[103,5204,233],{"class":113},[103,5206,236],{"class":134},[103,5208,239],{"class":134},[103,5210,131],{"class":130},[103,5212,191],{"class":134},[103,5214,5215,5217,5219,5221,5223,5225],{"class":105,"data-line":4473,"line":4473},[103,5216,142],{"class":141},[103,5218,328],{"class":130},[103,5220,275],{"class":109},[103,5222,3261],{"class":109},[103,5224,492],{"class":113},[103,5226,191],{"class":284},[103,5228,5229,5231,5233,5235,5237],{"class":105,"data-line":4488,"line":4488},[103,5230,142],{"class":141},[103,5232,342],{"class":141},[103,5234,1528],{"class":130},[103,5236,348],{"class":145},[103,5238,351],{"class":130},[103,5240,5241,5243,5245,5247,5249],{"class":105,"data-line":4501,"line":4501},[103,5242,142],{"class":141},[103,5244,342],{"class":141},[103,5246,1541],{"class":130},[103,5248,364],{"class":263},[103,5250,351],{"class":130},[103,5252,5253,5255,5257,5259,5261],{"class":105,"data-line":4514,"line":4514},[103,5254,142],{"class":141},[103,5256,342],{"class":141},[103,5258,1554],{"class":130},[103,5260,2899],{"class":263},[103,5262,351],{"class":130},[103,5264,5265,5267,5269],{"class":105,"data-line":4527,"line":4527},[103,5266,142],{"class":141},[103,5268,99],{"class":130},[103,5270,219],{"class":284},[103,5272,5273,5275,5277,5279,5281,5284,5286,5288,5291],{"class":105,"data-line":4536,"line":4536},[103,5274,142],{"class":141},[103,5276,297],{"class":130},[103,5278,1044],{"class":113},[103,5280,236],{"class":284},[103,5282,5283],{"class":145},"\"st === ",[103,5285,4631],{"class":263},[103,5287,146],{"class":145},[103,5289,5290],{"class":130},", st",[103,5292,169],{"class":284},[103,5294,5295],{"class":105,"data-line":4555,"line":4555},[103,5296,121],{"emptyLinePlaceholder":120},[103,5298,5299,5301,5303,5305,5307,5309,5311,5313],{"class":105,"data-line":4560,"line":4560},[103,5300,142],{"class":141},[103,5302,2916],{"class":130},[103,5304,275],{"class":109},[103,5306,278],{"class":130},[103,5308,281],{"class":113},[103,5310,236],{"class":284},[103,5312,394],{"class":130},[103,5314,169],{"class":284},[103,5316,5317,5319,5321,5323,5325,5327,5329,5331],{"class":105,"data-line":4594,"line":4594},[103,5318,142],{"class":141},[103,5320,1574],{"class":130},[103,5322,275],{"class":109},[103,5324,278],{"class":130},[103,5326,652],{"class":113},[103,5328,236],{"class":284},[103,5330,394],{"class":130},[103,5332,169],{"class":284},[103,5334,5335],{"class":105,"data-line":4616,"line":4616},[103,5336,121],{"emptyLinePlaceholder":120},[103,5338,5339,5341,5344,5346,5348,5351,5353,5356,5358,5360],{"class":105,"data-line":4641,"line":4641},[103,5340,142],{"class":141},[103,5342,5343],{"class":130},"m1, ok ",[103,5345,275],{"class":109},[103,5347,3008],{"class":130},[103,5349,5350],{"class":113},"MethodByName",[103,5352,236],{"class":284},[103,5354,5355],{"class":145},"\"SetName\"",[103,5357,239],{"class":284},[103,5359,4711],{"class":130},[103,5361,5362],{"class":1010},"\u002F\u002F 获取SetName方法\n",[103,5364,5365,5367,5369,5371,5373,5376,5379,5381,5384],{"class":105,"data-line":4650,"line":4650},[103,5366,142],{"class":141},[103,5368,297],{"class":130},[103,5370,1044],{"class":113},[103,5372,236],{"class":284},[103,5374,5375],{"class":145},"\"t get func by name:",[103,5377,5378],{"class":263},"%t\\n",[103,5380,146],{"class":145},[103,5382,5383],{"class":130},", ok",[103,5385,169],{"class":284},[103,5387,5389],{"class":105,"data-line":5388,"line":5388},51,[103,5390,121],{"emptyLinePlaceholder":120},[103,5392,5394,5396,5399,5401,5404,5406,5408,5410,5412,5414,5416,5418,5420],{"class":105,"data-line":5393,"line":5393},52,[103,5395,142],{"class":141},[103,5397,5398],{"class":130},"argsV1 ",[103,5400,275],{"class":109},[103,5402,5403],{"class":113}," make",[103,5405,236],{"class":284},[103,5407,1959],{"class":311},[103,5409,1964],{"class":311},[103,5411,27],{"class":113},[103,5413,1654],{"class":130},[103,5415,35],{"class":113},[103,5417,2295],{"class":130},[103,5419,1649],{"class":263},[103,5421,169],{"class":284},[103,5423,5425,5427,5429,5431,5434,5436,5439],{"class":105,"data-line":5424,"line":5424},53,[103,5426,142],{"class":141},[103,5428,5398],{"class":130},[103,5430,995],{"class":109},[103,5432,5433],{"class":113}," append",[103,5435,236],{"class":284},[103,5437,5438],{"class":130},"argsV1, v",[103,5440,169],{"class":284},[103,5442,5444,5446,5448,5450,5452,5454,5457,5459,5461,5464,5466],{"class":105,"data-line":5443,"line":5443},54,[103,5445,142],{"class":141},[103,5447,5398],{"class":130},[103,5449,995],{"class":109},[103,5451,5433],{"class":113},[103,5453,236],{"class":284},[103,5455,5456],{"class":130},"argsV1, reflect.",[103,5458,652],{"class":113},[103,5460,236],{"class":311},[103,5462,5463],{"class":145},"\"lisi\"",[103,5465,239],{"class":311},[103,5467,169],{"class":284},[103,5469,5471,5473,5476,5479,5481,5484,5486,5489],{"class":105,"data-line":5470,"line":5470},55,[103,5472,142],{"class":141},[103,5474,5475],{"class":130},"m1.Func.",[103,5477,5478],{"class":113},"Call",[103,5480,236],{"class":284},[103,5482,5483],{"class":130},"argsV1",[103,5485,239],{"class":284},[103,5487,5488],{"class":130},"       ",[103,5490,5491],{"class":1010},"\u002F\u002F\n",[103,5493,5495,5497,5499,5501,5503,5505,5507,5509,5511],{"class":105,"data-line":5494,"line":5494},56,[103,5496,142],{"class":141},[103,5498,297],{"class":130},[103,5500,1044],{"class":113},[103,5502,236],{"class":284},[103,5504,5283],{"class":145},[103,5506,4631],{"class":263},[103,5508,146],{"class":145},[103,5510,5290],{"class":130},[103,5512,169],{"class":284},[103,5514,5516],{"class":105,"data-line":5515,"line":5515},57,[103,5517,121],{"emptyLinePlaceholder":120},[103,5519,5521,5523,5526,5528,5530,5532,5534,5536,5538,5540],{"class":105,"data-line":5520,"line":5520},58,[103,5522,142],{"class":141},[103,5524,5525],{"class":130},"m2 ",[103,5527,275],{"class":109},[103,5529,2045],{"class":130},[103,5531,5350],{"class":113},[103,5533,236],{"class":284},[103,5535,5355],{"class":145},[103,5537,239],{"class":284},[103,5539,142],{"class":130},[103,5541,5362],{"class":1010},[103,5543,5545,5547,5550,5552,5554,5556,5558,5560,5562,5564,5566,5568,5570],{"class":105,"data-line":5544,"line":5544},59,[103,5546,142],{"class":141},[103,5548,5549],{"class":130},"argsV2 ",[103,5551,275],{"class":109},[103,5553,5403],{"class":113},[103,5555,236],{"class":284},[103,5557,1959],{"class":311},[103,5559,1964],{"class":311},[103,5561,27],{"class":113},[103,5563,1654],{"class":130},[103,5565,35],{"class":113},[103,5567,2295],{"class":130},[103,5569,1649],{"class":263},[103,5571,169],{"class":284},[103,5573,5575,5577,5579,5581,5583,5585,5588,5590,5592,5595,5597],{"class":105,"data-line":5574,"line":5574},60,[103,5576,142],{"class":141},[103,5578,5549],{"class":130},[103,5580,995],{"class":109},[103,5582,5433],{"class":113},[103,5584,236],{"class":284},[103,5586,5587],{"class":130},"argsV2, reflect.",[103,5589,652],{"class":113},[103,5591,236],{"class":311},[103,5593,5594],{"class":145},"\"wangwu\"",[103,5596,239],{"class":311},[103,5598,169],{"class":284},[103,5600,5602,5604,5607,5609,5611,5614],{"class":105,"data-line":5601,"line":5601},61,[103,5603,142],{"class":141},[103,5605,5606],{"class":130},"m2.",[103,5608,5478],{"class":113},[103,5610,236],{"class":284},[103,5612,5613],{"class":130},"argsV2",[103,5615,169],{"class":284},[103,5617,5619,5621,5623,5625,5627,5629,5631,5633,5635],{"class":105,"data-line":5618,"line":5618},62,[103,5620,142],{"class":141},[103,5622,297],{"class":130},[103,5624,1044],{"class":113},[103,5626,236],{"class":284},[103,5628,5283],{"class":145},[103,5630,4631],{"class":263},[103,5632,146],{"class":145},[103,5634,5290],{"class":130},[103,5636,169],{"class":284},[103,5638,5640],{"class":105,"data-line":5639,"line":5639},63,[103,5641,219],{"class":134},[14,5643,426],{},[94,5645,5648],{"className":5646,"code":5647,"language":432,"meta":99},[430],"st === &{Name:zhangsan Age:18 Score:90.5}\nt get func by name:true\nst === &{Name:lisi Age:18 Score:90.5}\nst === &{Name:wangwu Age:18 Score:90.5}\n",[25,5649,5647],{"__ignoreMap":99},[14,5651,5652,5653,5656,5657,5659,5660,5656,5663,5665,5666,5668,5669,2207,5672,5674,5675,5678,5679,5678,5682,5685,5686,5688,5689,5692,5693,5695],{},"可以看到通过",[25,5654,5655],{"code":5655},"reflect.Type.MethodByName()","方法获取到的",[25,5658,4679],{"code":4679},"对象和",[25,5661,5662],{"code":5662},"reflect.Value.MethodByName()",[25,5664,4679],{"code":4679},"获取到的",[25,5667,51],{"code":51},"对象都可以在程序运行时动态的调用方法修改结构本身，",[25,5670,5671],{"code":5671},"student",[25,5673,4209],{"code":4209},"由",[25,5676,5677],{"code":5677},"zhangsan","------>",[25,5680,5681],{"code":5681},"lisi",[25,5683,5684],{"code":5684},"wangwu","。\n但是二者的调用存在一个区别：通过",[25,5687,4679],{"code":4679},"调用方法，必须使用",[25,5690,5691],{"code":5691},"Func","字段，而且要传入接收器的",[25,5694,51],{"code":51},"作为第一个参数",[94,5697,5699],{"className":96,"code":5698,"language":98,"meta":99,"style":99},"m1.Func.Call(argsV1)\n",[25,5700,5701],{"__ignoreMap":99},[103,5702,5703,5705,5707,5709,5711],{"class":105,"data-line":106,"line":106},[103,5704,5475],{"class":130},[103,5706,5478],{"class":113},[103,5708,236],{"class":134},[103,5710,5483],{"class":130},[103,5712,169],{"class":134},[14,5714,5715,5717,5718,5720,5721,5723,5724,5727],{},[25,5716,5662],{"code":5662},"返回一个",[25,5719,51],{"code":51},"对象，它不需要接收器的",[25,5722,51],{"code":51},"作为第一个参数，而且直接使用",[25,5725,5726],{"code":5726},"Call()","发起方法调用：",[94,5729,5731],{"className":96,"code":5730,"language":98,"meta":99,"style":99},"m2.Call(argsV2)\n",[25,5732,5733],{"__ignoreMap":99},[103,5734,5735,5737,5739,5741,5743],{"class":105,"data-line":106,"line":106},[103,5736,5606],{"class":130},[103,5738,5478],{"class":113},[103,5740,236],{"class":134},[103,5742,5613],{"class":130},[103,5744,169],{"class":134},[71,5746,5747],{"id":5747},"通过反射设置值",[14,5749,5750,5751,5674,5753,5755,5756,5758,5759,5761,5762,5764,5765,5767,5768,5771],{},"在介绍通过反射设置或者说是修改值的方法之前，首先介绍一个概念，反射寻址。简单的说，可寻址就是可以根据地址找到值，在反射里面，",[25,5752,51],{"code":51},[25,5754,521],{"code":521},"方法得到，根据命名就可以知道",[25,5757,521],{"code":521},"是得到一个值对象，显然他不能得到这个值的地址。所以通过",[25,5760,521],{"code":521},"方法得到的",[25,5763,51],{"code":51},"都是不可寻址的。在",[25,5766,27],{"code":27},"包下有一个",[25,5769,5770],{"code":5770},"CanAddr()","方法可以用于验证一个对象是否可寻址",[94,5773,5775],{"className":96,"code":5774,"language":98,"meta":99,"style":99},"package main\n\nimport (\n    \"fmt\"\n    \"reflect\"\n)\n\ntype Student struct {\n    Name  string\n    Age   int\n    Score float64\n}\n\nfunc main() {\n    st := &Student{\n       Name:  \"zhangsan\",\n       Age:   18,\n       Score: 90.5,\n    }\n    v := reflect.ValueOf(st)\n    fmt.Println(v.CanAddr())\n}\n",[25,5776,5777,5783,5787,5795,5805,5815,5819,5823,5835,5843,5851,5859,5863,5867,5881,5895,5907,5919,5931,5939,5957,5979],{"__ignoreMap":99},[103,5778,5779,5781],{"class":105,"data-line":106,"line":106},[103,5780,110],{"class":109},[103,5782,114],{"class":113},[103,5784,5785],{"class":105,"data-line":117,"line":117},[103,5786,121],{"emptyLinePlaceholder":120},[103,5788,5789,5791,5793],{"class":105,"data-line":124,"line":124},[103,5790,127],{"class":109},[103,5792,131],{"class":130},[103,5794,135],{"class":134},[103,5796,5797,5799,5801,5803],{"class":105,"data-line":138,"line":138},[103,5798,142],{"class":141},[103,5800,146],{"class":145},[103,5802,149],{"class":113},[103,5804,152],{"class":145},[103,5806,5807,5809,5811,5813],{"class":105,"data-line":155,"line":155},[103,5808,142],{"class":141},[103,5810,146],{"class":145},[103,5812,27],{"class":113},[103,5814,152],{"class":145},[103,5816,5817],{"class":105,"data-line":166,"line":166},[103,5818,169],{"class":134},[103,5820,5821],{"class":105,"data-line":172,"line":172},[103,5822,121],{"emptyLinePlaceholder":120},[103,5824,5825,5827,5829,5831,5833],{"class":105,"data-line":177,"line":177},[103,5826,180],{"class":109},[103,5828,183],{"class":113},[103,5830,186],{"class":109},[103,5832,131],{"class":130},[103,5834,191],{"class":134},[103,5836,5837,5839,5841],{"class":105,"data-line":194,"line":194},[103,5838,142],{"class":141},[103,5840,1460],{"class":130},[103,5842,202],{"class":109},[103,5844,5845,5847,5849],{"class":105,"data-line":205,"line":205},[103,5846,142],{"class":141},[103,5848,1469],{"class":130},[103,5850,213],{"class":109},[103,5852,5853,5855,5857],{"class":105,"data-line":216,"line":216},[103,5854,142],{"class":141},[103,5856,1478],{"class":130},[103,5858,1481],{"class":109},[103,5860,5861],{"class":105,"data-line":222,"line":222},[103,5862,219],{"class":134},[103,5864,5865],{"class":105,"data-line":227,"line":227},[103,5866,121],{"emptyLinePlaceholder":120},[103,5868,5869,5871,5873,5875,5877,5879],{"class":105,"data-line":246,"line":246},[103,5870,230],{"class":109},[103,5872,233],{"class":113},[103,5874,236],{"class":134},[103,5876,239],{"class":134},[103,5878,131],{"class":130},[103,5880,191],{"class":134},[103,5882,5883,5885,5887,5889,5891,5893],{"class":105,"data-line":267,"line":267},[103,5884,142],{"class":141},[103,5886,328],{"class":130},[103,5888,275],{"class":109},[103,5890,3261],{"class":109},[103,5892,492],{"class":113},[103,5894,191],{"class":284},[103,5896,5897,5899,5901,5903,5905],{"class":105,"data-line":292,"line":292},[103,5898,142],{"class":141},[103,5900,342],{"class":141},[103,5902,1528],{"class":130},[103,5904,348],{"class":145},[103,5906,351],{"class":130},[103,5908,5909,5911,5913,5915,5917],{"class":105,"data-line":318,"line":318},[103,5910,142],{"class":141},[103,5912,342],{"class":141},[103,5914,1541],{"class":130},[103,5916,364],{"class":263},[103,5918,351],{"class":130},[103,5920,5921,5923,5925,5927,5929],{"class":105,"data-line":323,"line":323},[103,5922,142],{"class":141},[103,5924,342],{"class":141},[103,5926,1554],{"class":130},[103,5928,2899],{"class":263},[103,5930,351],{"class":130},[103,5932,5933,5935,5937],{"class":105,"data-line":337,"line":337},[103,5934,142],{"class":141},[103,5936,99],{"class":130},[103,5938,219],{"class":284},[103,5940,5941,5943,5945,5947,5949,5951,5953,5955],{"class":105,"data-line":354,"line":354},[103,5942,142],{"class":141},[103,5944,1574],{"class":130},[103,5946,275],{"class":109},[103,5948,278],{"class":130},[103,5950,652],{"class":113},[103,5952,236],{"class":284},[103,5954,394],{"class":130},[103,5956,169],{"class":284},[103,5958,5959,5961,5963,5965,5967,5970,5973,5975,5977],{"class":105,"data-line":369,"line":369},[103,5960,142],{"class":141},[103,5962,297],{"class":130},[103,5964,300],{"class":113},[103,5966,236],{"class":284},[103,5968,5969],{"class":130},"v.",[103,5971,5972],{"class":113},"CanAddr",[103,5974,236],{"class":311},[103,5976,239],{"class":311},[103,5978,169],{"class":284},[103,5980,5981],{"class":105,"data-line":378,"line":378},[103,5982,219],{"class":134},[14,5984,426],{},[94,5986,5989],{"className":5987,"code":5988,"language":432,"meta":99},[430],"false\n",[25,5990,5988],{"__ignoreMap":99},[14,5992,5993,5994,1850,5996,5998,5999,6001,6002,6004,6005,6007,6008,6010,6011,6013,6014,6016],{},"尽管这里",[25,5995,394],{"code":394},[25,5997,492],{"code":492},"类型的指针，但是经过",[25,6000,521],{"code":521},"之后得到的对象",[25,6003,1849],{"code":1849},"，仍然是不能寻址的，他只能反映出当前指针指向的具体元素的地址，而当前指针自身所在的内存地址是无从得知的\n经过前面学习指针反射类型的学习，我们知道了假设",[25,6006,521],{"code":521},"返回的是一个指针的",[25,6009,51],{"code":51},"对象，那么我们可以调用",[25,6012,2676],{"code":2676},"方法得到具体的类型，而此时得到的这个反射具体类型就是可寻址的，我们可以知道他的地址，道理很简单，因为",[25,6015,2676],{"code":2676},"获取到的值，记录了根据指针获取到值这个获取路径，显然我们可以根据值追溯到地址",[6018,6019,6020],"ol",{},[4665,6021,6022],{},"reflect.Value.Elem()方法得到具体的类型可寻址",[94,6024,6026],{"className":96,"code":6025,"language":98,"meta":99,"style":99},"package main\n\nimport (\n    \"fmt\"\n    \"reflect\"\n)\n\ntype Student struct {\n    Name  string\n    Age   int\n    Score float64\n}\n\nfunc main() {\n    st := &Student{\n       Name:  \"zhangsan\",\n       Age:   18,\n       Score: 90.5,\n    }\n    v := reflect.ValueOf(st)\n    fmt.Println(v.Elem().CanAddr())\n}\n",[25,6027,6028,6034,6038,6046,6056,6066,6070,6074,6086,6094,6102,6110,6114,6118,6132,6146,6158,6170,6182,6190,6208,6236],{"__ignoreMap":99},[103,6029,6030,6032],{"class":105,"data-line":106,"line":106},[103,6031,110],{"class":109},[103,6033,114],{"class":113},[103,6035,6036],{"class":105,"data-line":117,"line":117},[103,6037,121],{"emptyLinePlaceholder":120},[103,6039,6040,6042,6044],{"class":105,"data-line":124,"line":124},[103,6041,127],{"class":109},[103,6043,131],{"class":130},[103,6045,135],{"class":134},[103,6047,6048,6050,6052,6054],{"class":105,"data-line":138,"line":138},[103,6049,142],{"class":141},[103,6051,146],{"class":145},[103,6053,149],{"class":113},[103,6055,152],{"class":145},[103,6057,6058,6060,6062,6064],{"class":105,"data-line":155,"line":155},[103,6059,142],{"class":141},[103,6061,146],{"class":145},[103,6063,27],{"class":113},[103,6065,152],{"class":145},[103,6067,6068],{"class":105,"data-line":166,"line":166},[103,6069,169],{"class":134},[103,6071,6072],{"class":105,"data-line":172,"line":172},[103,6073,121],{"emptyLinePlaceholder":120},[103,6075,6076,6078,6080,6082,6084],{"class":105,"data-line":177,"line":177},[103,6077,180],{"class":109},[103,6079,183],{"class":113},[103,6081,186],{"class":109},[103,6083,131],{"class":130},[103,6085,191],{"class":134},[103,6087,6088,6090,6092],{"class":105,"data-line":194,"line":194},[103,6089,142],{"class":141},[103,6091,1460],{"class":130},[103,6093,202],{"class":109},[103,6095,6096,6098,6100],{"class":105,"data-line":205,"line":205},[103,6097,142],{"class":141},[103,6099,1469],{"class":130},[103,6101,213],{"class":109},[103,6103,6104,6106,6108],{"class":105,"data-line":216,"line":216},[103,6105,142],{"class":141},[103,6107,1478],{"class":130},[103,6109,1481],{"class":109},[103,6111,6112],{"class":105,"data-line":222,"line":222},[103,6113,219],{"class":134},[103,6115,6116],{"class":105,"data-line":227,"line":227},[103,6117,121],{"emptyLinePlaceholder":120},[103,6119,6120,6122,6124,6126,6128,6130],{"class":105,"data-line":246,"line":246},[103,6121,230],{"class":109},[103,6123,233],{"class":113},[103,6125,236],{"class":134},[103,6127,239],{"class":134},[103,6129,131],{"class":130},[103,6131,191],{"class":134},[103,6133,6134,6136,6138,6140,6142,6144],{"class":105,"data-line":267,"line":267},[103,6135,142],{"class":141},[103,6137,328],{"class":130},[103,6139,275],{"class":109},[103,6141,3261],{"class":109},[103,6143,492],{"class":113},[103,6145,191],{"class":284},[103,6147,6148,6150,6152,6154,6156],{"class":105,"data-line":292,"line":292},[103,6149,142],{"class":141},[103,6151,342],{"class":141},[103,6153,1528],{"class":130},[103,6155,348],{"class":145},[103,6157,351],{"class":130},[103,6159,6160,6162,6164,6166,6168],{"class":105,"data-line":318,"line":318},[103,6161,142],{"class":141},[103,6163,342],{"class":141},[103,6165,1541],{"class":130},[103,6167,364],{"class":263},[103,6169,351],{"class":130},[103,6171,6172,6174,6176,6178,6180],{"class":105,"data-line":323,"line":323},[103,6173,142],{"class":141},[103,6175,342],{"class":141},[103,6177,1554],{"class":130},[103,6179,2899],{"class":263},[103,6181,351],{"class":130},[103,6183,6184,6186,6188],{"class":105,"data-line":337,"line":337},[103,6185,142],{"class":141},[103,6187,99],{"class":130},[103,6189,219],{"class":284},[103,6191,6192,6194,6196,6198,6200,6202,6204,6206],{"class":105,"data-line":354,"line":354},[103,6193,142],{"class":141},[103,6195,1574],{"class":130},[103,6197,275],{"class":109},[103,6199,278],{"class":130},[103,6201,652],{"class":113},[103,6203,236],{"class":284},[103,6205,394],{"class":130},[103,6207,169],{"class":284},[103,6209,6210,6212,6214,6216,6218,6220,6222,6224,6226,6228,6230,6232,6234],{"class":105,"data-line":369,"line":369},[103,6211,142],{"class":141},[103,6213,297],{"class":130},[103,6215,300],{"class":113},[103,6217,236],{"class":284},[103,6219,5969],{"class":130},[103,6221,3366],{"class":113},[103,6223,236],{"class":311},[103,6225,239],{"class":311},[103,6227,1654],{"class":130},[103,6229,5972],{"class":113},[103,6231,236],{"class":311},[103,6233,239],{"class":311},[103,6235,169],{"class":284},[103,6237,6238],{"class":105,"data-line":378,"line":378},[103,6239,219],{"class":134},[14,6241,426],{},[94,6243,6246],{"className":6244,"code":6245,"language":432,"meta":99},[430],"true\n",[25,6247,6245],{"__ignoreMap":99},[14,6249,6250,6251,6253,6254,6256,6257],{},"可以看到，通过",[25,6252,2676],{"code":2676},"方法得到具体的类型之后，这个具体的类型就是可寻址的，所以",[25,6255,5770],{"code":5770},"方法返回",[25,6258,6259],{"code":6259},"true",[6018,6261,6262],{"start":117},[4665,6263,6264],{},"对切片进行反射时，通过 reflect.Value.Index(i)获取到的 reflect.Value 对象是可以寻址的",[94,6266,6268],{"className":96,"code":6267,"language":98,"meta":99,"style":99},"package main\n\nimport (\n    \"fmt\"\n    \"reflect\"\n)\n\ntype Student struct {\n    Name  string\n    Age   int\n    Score float64\n}\n\nfunc main() {\n    slice := []int{1, 2, 3, 4, 5}\n    v := reflect.ValueOf(slice)\n    fmt.Println(v.Index(0).CanAddr())\n    fmt.Println(v.Index(1).CanAddr())\n}\n",[25,6269,6270,6276,6280,6288,6298,6308,6312,6316,6328,6336,6344,6352,6356,6360,6374,6412,6430,6460,6490],{"__ignoreMap":99},[103,6271,6272,6274],{"class":105,"data-line":106,"line":106},[103,6273,110],{"class":109},[103,6275,114],{"class":113},[103,6277,6278],{"class":105,"data-line":117,"line":117},[103,6279,121],{"emptyLinePlaceholder":120},[103,6281,6282,6284,6286],{"class":105,"data-line":124,"line":124},[103,6283,127],{"class":109},[103,6285,131],{"class":130},[103,6287,135],{"class":134},[103,6289,6290,6292,6294,6296],{"class":105,"data-line":138,"line":138},[103,6291,142],{"class":141},[103,6293,146],{"class":145},[103,6295,149],{"class":113},[103,6297,152],{"class":145},[103,6299,6300,6302,6304,6306],{"class":105,"data-line":155,"line":155},[103,6301,142],{"class":141},[103,6303,146],{"class":145},[103,6305,27],{"class":113},[103,6307,152],{"class":145},[103,6309,6310],{"class":105,"data-line":166,"line":166},[103,6311,169],{"class":134},[103,6313,6314],{"class":105,"data-line":172,"line":172},[103,6315,121],{"emptyLinePlaceholder":120},[103,6317,6318,6320,6322,6324,6326],{"class":105,"data-line":177,"line":177},[103,6319,180],{"class":109},[103,6321,183],{"class":113},[103,6323,186],{"class":109},[103,6325,131],{"class":130},[103,6327,191],{"class":134},[103,6329,6330,6332,6334],{"class":105,"data-line":194,"line":194},[103,6331,142],{"class":141},[103,6333,1460],{"class":130},[103,6335,202],{"class":109},[103,6337,6338,6340,6342],{"class":105,"data-line":205,"line":205},[103,6339,142],{"class":141},[103,6341,1469],{"class":130},[103,6343,213],{"class":109},[103,6345,6346,6348,6350],{"class":105,"data-line":216,"line":216},[103,6347,142],{"class":141},[103,6349,1478],{"class":130},[103,6351,1481],{"class":109},[103,6353,6354],{"class":105,"data-line":222,"line":222},[103,6355,219],{"class":134},[103,6357,6358],{"class":105,"data-line":227,"line":227},[103,6359,121],{"emptyLinePlaceholder":120},[103,6361,6362,6364,6366,6368,6370,6372],{"class":105,"data-line":246,"line":246},[103,6363,230],{"class":109},[103,6365,233],{"class":113},[103,6367,236],{"class":134},[103,6369,239],{"class":134},[103,6371,131],{"class":130},[103,6373,191],{"class":134},[103,6375,6376,6378,6380,6382,6384,6386,6388,6390,6392,6394,6396,6398,6400,6402,6404,6406,6408,6410],{"class":105,"data-line":267,"line":267},[103,6377,142],{"class":141},[103,6379,2277],{"class":130},[103,6381,275],{"class":109},[103,6383,131],{"class":130},[103,6385,1959],{"class":284},[103,6387,1964],{"class":284},[103,6389,848],{"class":109},[103,6391,2290],{"class":284},[103,6393,1719],{"class":263},[103,6395,2295],{"class":130},[103,6397,1789],{"class":263},[103,6399,2295],{"class":130},[103,6401,2302],{"class":263},[103,6403,2295],{"class":130},[103,6405,2469],{"class":263},[103,6407,2295],{"class":130},[103,6409,2474],{"class":263},[103,6411,219],{"class":284},[103,6413,6414,6416,6418,6420,6422,6424,6426,6428],{"class":105,"data-line":292,"line":292},[103,6415,142],{"class":141},[103,6417,1574],{"class":130},[103,6419,275],{"class":109},[103,6421,278],{"class":130},[103,6423,652],{"class":113},[103,6425,236],{"class":284},[103,6427,2321],{"class":130},[103,6429,169],{"class":284},[103,6431,6432,6434,6436,6438,6440,6442,6444,6446,6448,6450,6452,6454,6456,6458],{"class":105,"data-line":318,"line":318},[103,6433,142],{"class":141},[103,6435,297],{"class":130},[103,6437,300],{"class":113},[103,6439,236],{"class":284},[103,6441,5969],{"class":130},[103,6443,2379],{"class":113},[103,6445,236],{"class":311},[103,6447,1649],{"class":263},[103,6449,239],{"class":311},[103,6451,1654],{"class":130},[103,6453,5972],{"class":113},[103,6455,236],{"class":311},[103,6457,239],{"class":311},[103,6459,169],{"class":284},[103,6461,6462,6464,6466,6468,6470,6472,6474,6476,6478,6480,6482,6484,6486,6488],{"class":105,"data-line":323,"line":323},[103,6463,142],{"class":141},[103,6465,297],{"class":130},[103,6467,300],{"class":113},[103,6469,236],{"class":284},[103,6471,5969],{"class":130},[103,6473,2379],{"class":113},[103,6475,236],{"class":311},[103,6477,1719],{"class":263},[103,6479,239],{"class":311},[103,6481,1654],{"class":130},[103,6483,5972],{"class":113},[103,6485,236],{"class":311},[103,6487,239],{"class":311},[103,6489,169],{"class":284},[103,6491,6492],{"class":105,"data-line":337,"line":337},[103,6493,219],{"class":134},[14,6495,426],{},[94,6497,6500],{"className":6498,"code":6499,"language":432,"meta":99},[430],"true\ntrue\n",[25,6501,6499],{"__ignoreMap":99},[14,6503,6250,6504,5665,6506,6508,6509,6256,6511,6513,6514,5665,6516,6518],{},[25,6505,1350],{"code":1350},[25,6507,51],{"code":51},"对象是可以寻址的，所以",[25,6510,5770],{"code":5770},[25,6512,6259],{"code":6259},"。但是对数组",[25,6515,1350],{"code":1350},[25,6517,51],{"code":51},"对象是不可寻址的",[94,6520,6522],{"className":96,"code":6521,"language":98,"meta":99,"style":99},"package main\n\nimport (\n    \"fmt\"\n    \"reflect\"\n)\n\ntype Student struct {\n    Name  string\n    Age   int\n    Score float64\n}\n\nfunc main() {\n    nums := [3]int{1, 2, 3}\n    v1 := reflect.ValueOf(nums)\n    fmt.Println(v1.Index(0).CanAddr())\n}\n",[25,6523,6524,6530,6534,6542,6552,6562,6566,6570,6582,6590,6598,6606,6610,6614,6628,6660,6678,6708],{"__ignoreMap":99},[103,6525,6526,6528],{"class":105,"data-line":106,"line":106},[103,6527,110],{"class":109},[103,6529,114],{"class":113},[103,6531,6532],{"class":105,"data-line":117,"line":117},[103,6533,121],{"emptyLinePlaceholder":120},[103,6535,6536,6538,6540],{"class":105,"data-line":124,"line":124},[103,6537,127],{"class":109},[103,6539,131],{"class":130},[103,6541,135],{"class":134},[103,6543,6544,6546,6548,6550],{"class":105,"data-line":138,"line":138},[103,6545,142],{"class":141},[103,6547,146],{"class":145},[103,6549,149],{"class":113},[103,6551,152],{"class":145},[103,6553,6554,6556,6558,6560],{"class":105,"data-line":155,"line":155},[103,6555,142],{"class":141},[103,6557,146],{"class":145},[103,6559,27],{"class":113},[103,6561,152],{"class":145},[103,6563,6564],{"class":105,"data-line":166,"line":166},[103,6565,169],{"class":134},[103,6567,6568],{"class":105,"data-line":172,"line":172},[103,6569,121],{"emptyLinePlaceholder":120},[103,6571,6572,6574,6576,6578,6580],{"class":105,"data-line":177,"line":177},[103,6573,180],{"class":109},[103,6575,183],{"class":113},[103,6577,186],{"class":109},[103,6579,131],{"class":130},[103,6581,191],{"class":134},[103,6583,6584,6586,6588],{"class":105,"data-line":194,"line":194},[103,6585,142],{"class":141},[103,6587,1460],{"class":130},[103,6589,202],{"class":109},[103,6591,6592,6594,6596],{"class":105,"data-line":205,"line":205},[103,6593,142],{"class":141},[103,6595,1469],{"class":130},[103,6597,213],{"class":109},[103,6599,6600,6602,6604],{"class":105,"data-line":216,"line":216},[103,6601,142],{"class":141},[103,6603,1478],{"class":130},[103,6605,1481],{"class":109},[103,6607,6608],{"class":105,"data-line":222,"line":222},[103,6609,219],{"class":134},[103,6611,6612],{"class":105,"data-line":227,"line":227},[103,6613,121],{"emptyLinePlaceholder":120},[103,6615,6616,6618,6620,6622,6624,6626],{"class":105,"data-line":246,"line":246},[103,6617,230],{"class":109},[103,6619,233],{"class":113},[103,6621,236],{"class":134},[103,6623,239],{"class":134},[103,6625,131],{"class":130},[103,6627,191],{"class":134},[103,6629,6630,6632,6634,6636,6638,6640,6642,6644,6646,6648,6650,6652,6654,6656,6658],{"class":105,"data-line":267,"line":267},[103,6631,142],{"class":141},[103,6633,2452],{"class":130},[103,6635,275],{"class":109},[103,6637,131],{"class":130},[103,6639,1959],{"class":284},[103,6641,2302],{"class":263},[103,6643,1964],{"class":284},[103,6645,848],{"class":109},[103,6647,2290],{"class":284},[103,6649,1719],{"class":263},[103,6651,2295],{"class":130},[103,6653,1789],{"class":263},[103,6655,2295],{"class":130},[103,6657,2302],{"class":263},[103,6659,219],{"class":284},[103,6661,6662,6664,6666,6668,6670,6672,6674,6676],{"class":105,"data-line":292,"line":292},[103,6663,142],{"class":141},[103,6665,645],{"class":130},[103,6667,275],{"class":109},[103,6669,278],{"class":130},[103,6671,652],{"class":113},[103,6673,236],{"class":284},[103,6675,2498],{"class":130},[103,6677,169],{"class":284},[103,6679,6680,6682,6684,6686,6688,6690,6692,6694,6696,6698,6700,6702,6704,6706],{"class":105,"data-line":318,"line":318},[103,6681,142],{"class":141},[103,6683,297],{"class":130},[103,6685,300],{"class":113},[103,6687,236],{"class":284},[103,6689,686],{"class":130},[103,6691,2379],{"class":113},[103,6693,236],{"class":311},[103,6695,1649],{"class":263},[103,6697,239],{"class":311},[103,6699,1654],{"class":130},[103,6701,5972],{"class":113},[103,6703,236],{"class":311},[103,6705,239],{"class":311},[103,6707,169],{"class":284},[103,6709,6710],{"class":105,"data-line":323,"line":323},[103,6711,219],{"class":134},[14,6713,426],{},[94,6715,6717],{"className":6716,"code":5988,"language":432,"meta":99},[430],[25,6718,5988],{"__ignoreMap":99},[14,6720,6721,6722,5665,6724,6726,6727,6730,6731,1378,6734,6736,6737,6739,6740,6742],{},"可以看到，对数组",[25,6723,1350],{"code":1350},[25,6725,51],{"code":51},"对象是不可寻址的\n通过",[25,6728,6729],{"code":6729},"reflect.ValueOf","的到的其实是原始数据的一份拷贝，切片底层实现其实是一个",[25,6732,6733],{"code":6733},"stuct",[25,6735,440],{"code":440},"里包含一个执行具体数组的指针，对切片拷贝，虽然拷贝了这个",[25,6738,440],{"code":440},"，自然",[25,6741,440],{"code":440},"里的指针也拷贝了一份，但是两个指针执行同一个内存区域，所以修改拷贝的切片，也会影响原值",[6018,6744,6745],{"start":124},[4665,6746,6747],{},"通过结构体的指针获取到的字段也是可寻址的",[94,6749,6751],{"className":96,"code":6750,"language":98,"meta":99,"style":99},"package main\n\nimport (\n    \"fmt\"\n    \"reflect\"\n)\n\ntype Student struct {\n    Name  string\n    Age   int\n    Score float64\n}\n\nfunc main() {\n    st := &Student{\n       Name:  \"zhangsan\",\n       Age:   18,\n       Score: 90.5,\n    }\n    v := reflect.ValueOf(st)\n    f := v.Elem().Field(0)\n    fmt.Println(f.CanAddr())\n}\n",[25,6752,6753,6759,6763,6771,6781,6791,6795,6799,6811,6819,6827,6835,6839,6843,6857,6871,6883,6895,6907,6915,6933,6960,6981],{"__ignoreMap":99},[103,6754,6755,6757],{"class":105,"data-line":106,"line":106},[103,6756,110],{"class":109},[103,6758,114],{"class":113},[103,6760,6761],{"class":105,"data-line":117,"line":117},[103,6762,121],{"emptyLinePlaceholder":120},[103,6764,6765,6767,6769],{"class":105,"data-line":124,"line":124},[103,6766,127],{"class":109},[103,6768,131],{"class":130},[103,6770,135],{"class":134},[103,6772,6773,6775,6777,6779],{"class":105,"data-line":138,"line":138},[103,6774,142],{"class":141},[103,6776,146],{"class":145},[103,6778,149],{"class":113},[103,6780,152],{"class":145},[103,6782,6783,6785,6787,6789],{"class":105,"data-line":155,"line":155},[103,6784,142],{"class":141},[103,6786,146],{"class":145},[103,6788,27],{"class":113},[103,6790,152],{"class":145},[103,6792,6793],{"class":105,"data-line":166,"line":166},[103,6794,169],{"class":134},[103,6796,6797],{"class":105,"data-line":172,"line":172},[103,6798,121],{"emptyLinePlaceholder":120},[103,6800,6801,6803,6805,6807,6809],{"class":105,"data-line":177,"line":177},[103,6802,180],{"class":109},[103,6804,183],{"class":113},[103,6806,186],{"class":109},[103,6808,131],{"class":130},[103,6810,191],{"class":134},[103,6812,6813,6815,6817],{"class":105,"data-line":194,"line":194},[103,6814,142],{"class":141},[103,6816,1460],{"class":130},[103,6818,202],{"class":109},[103,6820,6821,6823,6825],{"class":105,"data-line":205,"line":205},[103,6822,142],{"class":141},[103,6824,1469],{"class":130},[103,6826,213],{"class":109},[103,6828,6829,6831,6833],{"class":105,"data-line":216,"line":216},[103,6830,142],{"class":141},[103,6832,1478],{"class":130},[103,6834,1481],{"class":109},[103,6836,6837],{"class":105,"data-line":222,"line":222},[103,6838,219],{"class":134},[103,6840,6841],{"class":105,"data-line":227,"line":227},[103,6842,121],{"emptyLinePlaceholder":120},[103,6844,6845,6847,6849,6851,6853,6855],{"class":105,"data-line":246,"line":246},[103,6846,230],{"class":109},[103,6848,233],{"class":113},[103,6850,236],{"class":134},[103,6852,239],{"class":134},[103,6854,131],{"class":130},[103,6856,191],{"class":134},[103,6858,6859,6861,6863,6865,6867,6869],{"class":105,"data-line":267,"line":267},[103,6860,142],{"class":141},[103,6862,328],{"class":130},[103,6864,275],{"class":109},[103,6866,3261],{"class":109},[103,6868,492],{"class":113},[103,6870,191],{"class":284},[103,6872,6873,6875,6877,6879,6881],{"class":105,"data-line":292,"line":292},[103,6874,142],{"class":141},[103,6876,342],{"class":141},[103,6878,1528],{"class":130},[103,6880,348],{"class":145},[103,6882,351],{"class":130},[103,6884,6885,6887,6889,6891,6893],{"class":105,"data-line":318,"line":318},[103,6886,142],{"class":141},[103,6888,342],{"class":141},[103,6890,1541],{"class":130},[103,6892,364],{"class":263},[103,6894,351],{"class":130},[103,6896,6897,6899,6901,6903,6905],{"class":105,"data-line":323,"line":323},[103,6898,142],{"class":141},[103,6900,342],{"class":141},[103,6902,1554],{"class":130},[103,6904,2899],{"class":263},[103,6906,351],{"class":130},[103,6908,6909,6911,6913],{"class":105,"data-line":337,"line":337},[103,6910,142],{"class":141},[103,6912,99],{"class":130},[103,6914,219],{"class":284},[103,6916,6917,6919,6921,6923,6925,6927,6929,6931],{"class":105,"data-line":354,"line":354},[103,6918,142],{"class":141},[103,6920,1574],{"class":130},[103,6922,275],{"class":109},[103,6924,278],{"class":130},[103,6926,652],{"class":113},[103,6928,236],{"class":284},[103,6930,394],{"class":130},[103,6932,169],{"class":284},[103,6934,6935,6937,6940,6942,6944,6946,6948,6950,6952,6954,6956,6958],{"class":105,"data-line":369,"line":369},[103,6936,142],{"class":141},[103,6938,6939],{"class":130},"f ",[103,6941,275],{"class":109},[103,6943,2045],{"class":130},[103,6945,3366],{"class":113},[103,6947,236],{"class":284},[103,6949,239],{"class":284},[103,6951,1654],{"class":130},[103,6953,1644],{"class":113},[103,6955,236],{"class":284},[103,6957,1649],{"class":263},[103,6959,169],{"class":284},[103,6961,6962,6964,6966,6968,6970,6973,6975,6977,6979],{"class":105,"data-line":378,"line":378},[103,6963,142],{"class":141},[103,6965,297],{"class":130},[103,6967,300],{"class":113},[103,6969,236],{"class":284},[103,6971,6972],{"class":130},"f.",[103,6974,5972],{"class":113},[103,6976,236],{"class":311},[103,6978,239],{"class":311},[103,6980,169],{"class":284},[103,6982,6983],{"class":105,"data-line":399,"line":399},[103,6984,219],{"class":134},[14,6986,426],{},[94,6988,6990],{"className":6989,"code":6245,"language":432,"meta":99},[430],[25,6991,6245],{"__ignoreMap":99},[14,6993,6994,6995,6997,6998,7000,7001,7004,7005,2207,7007,7009],{},"可以看到，通过结构体的指针获取到的字段也是可寻址的。通过上面分析，可寻址就是可以找到数据本身，而不是找到数据的副本，既然我们找到了数据本身，那么就可以对原数据修改，即设置值了吗？\n大体上是这样，但是条件可能还要更严格一些，刚是可寻址还不够，比如当",[25,6996,440],{"code":440},"里含有未导出字段时，这个未导出字段时不可设置的。所以，在",[25,6999,27],{"code":27},"包下有一个专门的方法用于判断这个值是否可修改：",[25,7002,7003],{"code":7003},"CanSet()","\n假设我们将",[25,7006,492],{"code":492},[25,7008,4423],{"code":4423},"字段改为未导出的，然后运行以下代码：",[94,7011,7013],{"className":96,"code":7012,"language":98,"meta":99,"style":99},"package main\n\nimport (\n    \"fmt\"\n    \"reflect\"\n)\n\ntype Student struct {\n    Name  string\n    Age   int\n    score float64\n}\n\nfunc main() {\n    st := &Student{\n       Name:  \"zhangsan\",\n       Age:   18,\n       score: 90.5,\n    }\n    v := reflect.ValueOf(st)\n    f := v.Elem().Field(0)\n    fmt.Println(f.CanSet())\n    f2 := v.Elem().Field(2)\n    fmt.Println(f2.CanSet())\n}\n",[25,7014,7015,7021,7025,7033,7043,7053,7057,7061,7073,7081,7089,7098,7102,7106,7120,7134,7146,7158,7171,7179,7197,7223,7244,7271,7292],{"__ignoreMap":99},[103,7016,7017,7019],{"class":105,"data-line":106,"line":106},[103,7018,110],{"class":109},[103,7020,114],{"class":113},[103,7022,7023],{"class":105,"data-line":117,"line":117},[103,7024,121],{"emptyLinePlaceholder":120},[103,7026,7027,7029,7031],{"class":105,"data-line":124,"line":124},[103,7028,127],{"class":109},[103,7030,131],{"class":130},[103,7032,135],{"class":134},[103,7034,7035,7037,7039,7041],{"class":105,"data-line":138,"line":138},[103,7036,142],{"class":141},[103,7038,146],{"class":145},[103,7040,149],{"class":113},[103,7042,152],{"class":145},[103,7044,7045,7047,7049,7051],{"class":105,"data-line":155,"line":155},[103,7046,142],{"class":141},[103,7048,146],{"class":145},[103,7050,27],{"class":113},[103,7052,152],{"class":145},[103,7054,7055],{"class":105,"data-line":166,"line":166},[103,7056,169],{"class":134},[103,7058,7059],{"class":105,"data-line":172,"line":172},[103,7060,121],{"emptyLinePlaceholder":120},[103,7062,7063,7065,7067,7069,7071],{"class":105,"data-line":177,"line":177},[103,7064,180],{"class":109},[103,7066,183],{"class":113},[103,7068,186],{"class":109},[103,7070,131],{"class":130},[103,7072,191],{"class":134},[103,7074,7075,7077,7079],{"class":105,"data-line":194,"line":194},[103,7076,142],{"class":141},[103,7078,1460],{"class":130},[103,7080,202],{"class":109},[103,7082,7083,7085,7087],{"class":105,"data-line":205,"line":205},[103,7084,142],{"class":141},[103,7086,1469],{"class":130},[103,7088,213],{"class":109},[103,7090,7091,7093,7096],{"class":105,"data-line":216,"line":216},[103,7092,142],{"class":141},[103,7094,7095],{"class":130},"score ",[103,7097,1481],{"class":109},[103,7099,7100],{"class":105,"data-line":222,"line":222},[103,7101,219],{"class":134},[103,7103,7104],{"class":105,"data-line":227,"line":227},[103,7105,121],{"emptyLinePlaceholder":120},[103,7107,7108,7110,7112,7114,7116,7118],{"class":105,"data-line":246,"line":246},[103,7109,230],{"class":109},[103,7111,233],{"class":113},[103,7113,236],{"class":134},[103,7115,239],{"class":134},[103,7117,131],{"class":130},[103,7119,191],{"class":134},[103,7121,7122,7124,7126,7128,7130,7132],{"class":105,"data-line":267,"line":267},[103,7123,142],{"class":141},[103,7125,328],{"class":130},[103,7127,275],{"class":109},[103,7129,3261],{"class":109},[103,7131,492],{"class":113},[103,7133,191],{"class":284},[103,7135,7136,7138,7140,7142,7144],{"class":105,"data-line":292,"line":292},[103,7137,142],{"class":141},[103,7139,342],{"class":141},[103,7141,1528],{"class":130},[103,7143,348],{"class":145},[103,7145,351],{"class":130},[103,7147,7148,7150,7152,7154,7156],{"class":105,"data-line":318,"line":318},[103,7149,142],{"class":141},[103,7151,342],{"class":141},[103,7153,1541],{"class":130},[103,7155,364],{"class":263},[103,7157,351],{"class":130},[103,7159,7160,7162,7164,7167,7169],{"class":105,"data-line":323,"line":323},[103,7161,142],{"class":141},[103,7163,342],{"class":141},[103,7165,7166],{"class":130},"score: ",[103,7168,2899],{"class":263},[103,7170,351],{"class":130},[103,7172,7173,7175,7177],{"class":105,"data-line":337,"line":337},[103,7174,142],{"class":141},[103,7176,99],{"class":130},[103,7178,219],{"class":284},[103,7180,7181,7183,7185,7187,7189,7191,7193,7195],{"class":105,"data-line":354,"line":354},[103,7182,142],{"class":141},[103,7184,1574],{"class":130},[103,7186,275],{"class":109},[103,7188,278],{"class":130},[103,7190,652],{"class":113},[103,7192,236],{"class":284},[103,7194,394],{"class":130},[103,7196,169],{"class":284},[103,7198,7199,7201,7203,7205,7207,7209,7211,7213,7215,7217,7219,7221],{"class":105,"data-line":369,"line":369},[103,7200,142],{"class":141},[103,7202,6939],{"class":130},[103,7204,275],{"class":109},[103,7206,2045],{"class":130},[103,7208,3366],{"class":113},[103,7210,236],{"class":284},[103,7212,239],{"class":284},[103,7214,1654],{"class":130},[103,7216,1644],{"class":113},[103,7218,236],{"class":284},[103,7220,1649],{"class":263},[103,7222,169],{"class":284},[103,7224,7225,7227,7229,7231,7233,7235,7238,7240,7242],{"class":105,"data-line":378,"line":378},[103,7226,142],{"class":141},[103,7228,297],{"class":130},[103,7230,300],{"class":113},[103,7232,236],{"class":284},[103,7234,6972],{"class":130},[103,7236,7237],{"class":113},"CanSet",[103,7239,236],{"class":311},[103,7241,239],{"class":311},[103,7243,169],{"class":284},[103,7245,7246,7248,7251,7253,7255,7257,7259,7261,7263,7265,7267,7269],{"class":105,"data-line":399,"line":399},[103,7247,142],{"class":141},[103,7249,7250],{"class":130},"f2 ",[103,7252,275],{"class":109},[103,7254,2045],{"class":130},[103,7256,3366],{"class":113},[103,7258,236],{"class":284},[103,7260,239],{"class":284},[103,7262,1654],{"class":130},[103,7264,1644],{"class":113},[103,7266,236],{"class":284},[103,7268,1789],{"class":263},[103,7270,169],{"class":284},[103,7272,7273,7275,7277,7279,7281,7284,7286,7288,7290],{"class":105,"data-line":421,"line":421},[103,7274,142],{"class":141},[103,7276,297],{"class":130},[103,7278,300],{"class":113},[103,7280,236],{"class":284},[103,7282,7283],{"class":130},"f2.",[103,7285,7237],{"class":113},[103,7287,236],{"class":311},[103,7289,239],{"class":311},[103,7291,169],{"class":284},[103,7293,7294],{"class":105,"data-line":1761,"line":1761},[103,7295,219],{"class":134},[14,7297,426],{},[94,7299,7302],{"className":7300,"code":7301,"language":432,"meta":99},[430],"true\nfalse\n",[25,7303,7301],{"__ignoreMap":99},[14,7305,7306,7307,7309,7310,7312,7313,7315,7316,7319,7320,7323,7324,7323,7327,7330],{},"可以看到，可导出字段",[25,7308,1665],{"code":1665},"是可设置的，而不可导出字段",[25,7311,4423],{"code":4423},"是不可设置的。当我们判定一个值是可设置之后，接下来要怎么修改这个值呢？\n",[25,7314,51],{"code":51},"为基础类型提供了一系列特殊的",[25,7317,7318],{"code":7318},"Set","方法：",[25,7321,7322],{"code":7322},"SetInt","、",[25,7325,7326],{"code":7326},"SetUint",[25,7328,7329],{"code":7329},"SetFloat","等在反射的时候修改对应类型值。\n下面看个具体例子：",[94,7332,7334],{"className":96,"code":7333,"language":98,"meta":99,"style":99},"package main\n\nimport (\n    \"fmt\"\n    \"reflect\"\n)\n\ntype Student struct {\n    Name  string\n    Age   int\n    Score float64\n}\n\nfunc main() {\n    st := &Student{\n       Name:  \"zhangsan\",\n       Age:   18,\n       Score: 90.5,\n    }\n    v := reflect.ValueOf(st)\n    f := v.Elem().Field(0)\n    f.SetString(\"lisi\")\n    fmt.Printf(\"st = %+v\\n\", st)\n}\n",[25,7335,7336,7342,7346,7354,7364,7374,7378,7382,7394,7402,7410,7418,7422,7426,7440,7454,7466,7478,7490,7498,7516,7542,7557,7578],{"__ignoreMap":99},[103,7337,7338,7340],{"class":105,"data-line":106,"line":106},[103,7339,110],{"class":109},[103,7341,114],{"class":113},[103,7343,7344],{"class":105,"data-line":117,"line":117},[103,7345,121],{"emptyLinePlaceholder":120},[103,7347,7348,7350,7352],{"class":105,"data-line":124,"line":124},[103,7349,127],{"class":109},[103,7351,131],{"class":130},[103,7353,135],{"class":134},[103,7355,7356,7358,7360,7362],{"class":105,"data-line":138,"line":138},[103,7357,142],{"class":141},[103,7359,146],{"class":145},[103,7361,149],{"class":113},[103,7363,152],{"class":145},[103,7365,7366,7368,7370,7372],{"class":105,"data-line":155,"line":155},[103,7367,142],{"class":141},[103,7369,146],{"class":145},[103,7371,27],{"class":113},[103,7373,152],{"class":145},[103,7375,7376],{"class":105,"data-line":166,"line":166},[103,7377,169],{"class":134},[103,7379,7380],{"class":105,"data-line":172,"line":172},[103,7381,121],{"emptyLinePlaceholder":120},[103,7383,7384,7386,7388,7390,7392],{"class":105,"data-line":177,"line":177},[103,7385,180],{"class":109},[103,7387,183],{"class":113},[103,7389,186],{"class":109},[103,7391,131],{"class":130},[103,7393,191],{"class":134},[103,7395,7396,7398,7400],{"class":105,"data-line":194,"line":194},[103,7397,142],{"class":141},[103,7399,1460],{"class":130},[103,7401,202],{"class":109},[103,7403,7404,7406,7408],{"class":105,"data-line":205,"line":205},[103,7405,142],{"class":141},[103,7407,1469],{"class":130},[103,7409,213],{"class":109},[103,7411,7412,7414,7416],{"class":105,"data-line":216,"line":216},[103,7413,142],{"class":141},[103,7415,1478],{"class":130},[103,7417,1481],{"class":109},[103,7419,7420],{"class":105,"data-line":222,"line":222},[103,7421,219],{"class":134},[103,7423,7424],{"class":105,"data-line":227,"line":227},[103,7425,121],{"emptyLinePlaceholder":120},[103,7427,7428,7430,7432,7434,7436,7438],{"class":105,"data-line":246,"line":246},[103,7429,230],{"class":109},[103,7431,233],{"class":113},[103,7433,236],{"class":134},[103,7435,239],{"class":134},[103,7437,131],{"class":130},[103,7439,191],{"class":134},[103,7441,7442,7444,7446,7448,7450,7452],{"class":105,"data-line":267,"line":267},[103,7443,142],{"class":141},[103,7445,328],{"class":130},[103,7447,275],{"class":109},[103,7449,3261],{"class":109},[103,7451,492],{"class":113},[103,7453,191],{"class":284},[103,7455,7456,7458,7460,7462,7464],{"class":105,"data-line":292,"line":292},[103,7457,142],{"class":141},[103,7459,342],{"class":141},[103,7461,1528],{"class":130},[103,7463,348],{"class":145},[103,7465,351],{"class":130},[103,7467,7468,7470,7472,7474,7476],{"class":105,"data-line":318,"line":318},[103,7469,142],{"class":141},[103,7471,342],{"class":141},[103,7473,1541],{"class":130},[103,7475,364],{"class":263},[103,7477,351],{"class":130},[103,7479,7480,7482,7484,7486,7488],{"class":105,"data-line":323,"line":323},[103,7481,142],{"class":141},[103,7483,342],{"class":141},[103,7485,1554],{"class":130},[103,7487,2899],{"class":263},[103,7489,351],{"class":130},[103,7491,7492,7494,7496],{"class":105,"data-line":337,"line":337},[103,7493,142],{"class":141},[103,7495,99],{"class":130},[103,7497,219],{"class":284},[103,7499,7500,7502,7504,7506,7508,7510,7512,7514],{"class":105,"data-line":354,"line":354},[103,7501,142],{"class":141},[103,7503,1574],{"class":130},[103,7505,275],{"class":109},[103,7507,278],{"class":130},[103,7509,652],{"class":113},[103,7511,236],{"class":284},[103,7513,394],{"class":130},[103,7515,169],{"class":284},[103,7517,7518,7520,7522,7524,7526,7528,7530,7532,7534,7536,7538,7540],{"class":105,"data-line":369,"line":369},[103,7519,142],{"class":141},[103,7521,6939],{"class":130},[103,7523,275],{"class":109},[103,7525,2045],{"class":130},[103,7527,3366],{"class":113},[103,7529,236],{"class":284},[103,7531,239],{"class":284},[103,7533,1654],{"class":130},[103,7535,1644],{"class":113},[103,7537,236],{"class":284},[103,7539,1649],{"class":263},[103,7541,169],{"class":284},[103,7543,7544,7546,7548,7551,7553,7555],{"class":105,"data-line":378,"line":378},[103,7545,142],{"class":141},[103,7547,6972],{"class":130},[103,7549,7550],{"class":113},"SetString",[103,7552,236],{"class":284},[103,7554,5463],{"class":145},[103,7556,169],{"class":284},[103,7558,7559,7561,7563,7565,7567,7570,7572,7574,7576],{"class":105,"data-line":399,"line":399},[103,7560,142],{"class":141},[103,7562,297],{"class":130},[103,7564,1044],{"class":113},[103,7566,236],{"class":284},[103,7568,7569],{"class":145},"\"st = ",[103,7571,4631],{"class":263},[103,7573,146],{"class":145},[103,7575,5290],{"class":130},[103,7577,169],{"class":284},[103,7579,7580],{"class":105,"data-line":421,"line":421},[103,7581,219],{"class":134},[14,7583,426],{},[94,7585,7588],{"className":7586,"code":7587,"language":432,"meta":99},[430],"st = &{Name:lisi Age:18 Score:90.5}\n",[25,7589,7587],{"__ignoreMap":99},[14,7591,7592,7593,2207,7595,7597,7598,7600,7601,7603,7604,493],{},"可以看到，通过调用第一个字段",[25,7594,2619],{"code":2619},[25,7596,7550],{"code":7550},"方法，将",[25,7599,394],{"code":394},"对象的",[25,7602,1665],{"code":1665},"改为了",[25,7605,5681],{"code":5681},[10,7607,7608],{"id":7608},"结构体标签",[14,7610,7611],{},"当我们判定一个值是可设置之后，接下来要怎么修改这个值呢？",[14,7613,7614,7315,7616,7319,7618,7323,7620,7323,7622,7624],{},[25,7615,51],{"code":51},[25,7617,7318],{"code":7318},[25,7619,7322],{"code":7322},[25,7621,7326],{"code":7326},[25,7623,7329],{"code":7329},"等在反射的时候修改对应类型值。",[14,7626,7627],{},"下面看个具体例子：",[94,7629,7630],{"className":96,"code":7333,"language":98,"meta":99,"style":99},[25,7631,7632,7638,7642,7650,7660,7670,7674,7678,7690,7698,7706,7714,7718,7722,7736,7750,7762,7774,7786,7794,7812,7838,7852,7872],{"__ignoreMap":99},[103,7633,7634,7636],{"class":105,"data-line":106,"line":106},[103,7635,110],{"class":109},[103,7637,114],{"class":113},[103,7639,7640],{"class":105,"data-line":117,"line":117},[103,7641,121],{"emptyLinePlaceholder":120},[103,7643,7644,7646,7648],{"class":105,"data-line":124,"line":124},[103,7645,127],{"class":109},[103,7647,131],{"class":130},[103,7649,135],{"class":134},[103,7651,7652,7654,7656,7658],{"class":105,"data-line":138,"line":138},[103,7653,142],{"class":141},[103,7655,146],{"class":145},[103,7657,149],{"class":113},[103,7659,152],{"class":145},[103,7661,7662,7664,7666,7668],{"class":105,"data-line":155,"line":155},[103,7663,142],{"class":141},[103,7665,146],{"class":145},[103,7667,27],{"class":113},[103,7669,152],{"class":145},[103,7671,7672],{"class":105,"data-line":166,"line":166},[103,7673,169],{"class":134},[103,7675,7676],{"class":105,"data-line":172,"line":172},[103,7677,121],{"emptyLinePlaceholder":120},[103,7679,7680,7682,7684,7686,7688],{"class":105,"data-line":177,"line":177},[103,7681,180],{"class":109},[103,7683,183],{"class":113},[103,7685,186],{"class":109},[103,7687,131],{"class":130},[103,7689,191],{"class":134},[103,7691,7692,7694,7696],{"class":105,"data-line":194,"line":194},[103,7693,142],{"class":141},[103,7695,1460],{"class":130},[103,7697,202],{"class":109},[103,7699,7700,7702,7704],{"class":105,"data-line":205,"line":205},[103,7701,142],{"class":141},[103,7703,1469],{"class":130},[103,7705,213],{"class":109},[103,7707,7708,7710,7712],{"class":105,"data-line":216,"line":216},[103,7709,142],{"class":141},[103,7711,1478],{"class":130},[103,7713,1481],{"class":109},[103,7715,7716],{"class":105,"data-line":222,"line":222},[103,7717,219],{"class":134},[103,7719,7720],{"class":105,"data-line":227,"line":227},[103,7721,121],{"emptyLinePlaceholder":120},[103,7723,7724,7726,7728,7730,7732,7734],{"class":105,"data-line":246,"line":246},[103,7725,230],{"class":109},[103,7727,233],{"class":113},[103,7729,236],{"class":134},[103,7731,239],{"class":134},[103,7733,131],{"class":130},[103,7735,191],{"class":134},[103,7737,7738,7740,7742,7744,7746,7748],{"class":105,"data-line":267,"line":267},[103,7739,142],{"class":141},[103,7741,328],{"class":130},[103,7743,275],{"class":109},[103,7745,3261],{"class":109},[103,7747,492],{"class":113},[103,7749,191],{"class":284},[103,7751,7752,7754,7756,7758,7760],{"class":105,"data-line":292,"line":292},[103,7753,142],{"class":141},[103,7755,342],{"class":141},[103,7757,1528],{"class":130},[103,7759,348],{"class":145},[103,7761,351],{"class":130},[103,7763,7764,7766,7768,7770,7772],{"class":105,"data-line":318,"line":318},[103,7765,142],{"class":141},[103,7767,342],{"class":141},[103,7769,1541],{"class":130},[103,7771,364],{"class":263},[103,7773,351],{"class":130},[103,7775,7776,7778,7780,7782,7784],{"class":105,"data-line":323,"line":323},[103,7777,142],{"class":141},[103,7779,342],{"class":141},[103,7781,1554],{"class":130},[103,7783,2899],{"class":263},[103,7785,351],{"class":130},[103,7787,7788,7790,7792],{"class":105,"data-line":337,"line":337},[103,7789,142],{"class":141},[103,7791,99],{"class":130},[103,7793,219],{"class":284},[103,7795,7796,7798,7800,7802,7804,7806,7808,7810],{"class":105,"data-line":354,"line":354},[103,7797,142],{"class":141},[103,7799,1574],{"class":130},[103,7801,275],{"class":109},[103,7803,278],{"class":130},[103,7805,652],{"class":113},[103,7807,236],{"class":284},[103,7809,394],{"class":130},[103,7811,169],{"class":284},[103,7813,7814,7816,7818,7820,7822,7824,7826,7828,7830,7832,7834,7836],{"class":105,"data-line":369,"line":369},[103,7815,142],{"class":141},[103,7817,6939],{"class":130},[103,7819,275],{"class":109},[103,7821,2045],{"class":130},[103,7823,3366],{"class":113},[103,7825,236],{"class":284},[103,7827,239],{"class":284},[103,7829,1654],{"class":130},[103,7831,1644],{"class":113},[103,7833,236],{"class":284},[103,7835,1649],{"class":263},[103,7837,169],{"class":284},[103,7839,7840,7842,7844,7846,7848,7850],{"class":105,"data-line":378,"line":378},[103,7841,142],{"class":141},[103,7843,6972],{"class":130},[103,7845,7550],{"class":113},[103,7847,236],{"class":284},[103,7849,5463],{"class":145},[103,7851,169],{"class":284},[103,7853,7854,7856,7858,7860,7862,7864,7866,7868,7870],{"class":105,"data-line":399,"line":399},[103,7855,142],{"class":141},[103,7857,297],{"class":130},[103,7859,1044],{"class":113},[103,7861,236],{"class":284},[103,7863,7569],{"class":145},[103,7865,4631],{"class":263},[103,7867,146],{"class":145},[103,7869,5290],{"class":130},[103,7871,169],{"class":284},[103,7873,7874],{"class":105,"data-line":421,"line":421},[103,7875,219],{"class":134},[14,7877,426],{},[94,7879,7881],{"className":7880,"code":7587,"language":432,"meta":99},[430],[25,7882,7587],{"__ignoreMap":99},[14,7884,7592,7885,2207,7887,7597,7889,7600,7891,7603,7893,493],{},[25,7886,2619],{"code":2619},[25,7888,7550],{"code":7550},[25,7890,394],{"code":394},[25,7892,1665],{"code":1665},[25,7894,5681],{"code":5681},[71,7896,7608],{"id":7897},"结构体标签-1",[14,7899,7900,7901,7904],{},"我们在定义结构体的时候，可以为每个字段后面加一个标签，即",[25,7902,7903],{"code":7903},"StructTag","，标签其实就是一组键值对，每个键值对用空格分开，这些标签信息可以通过反射获取：",[94,7906,7908],{"className":96,"code":7907,"language":98,"meta":99,"style":99},"package main\n\nimport (\n    \"fmt\"\n    \"reflect\"\n)\n\ntype Student struct {\n    Name  string  `json:\"name\"`\n    Age   int     `json:\"age\"`\n    Score float64 `json:\"score\"`\n}\n\nfunc main() {\n    st := &Student{\n       Name:  \"zhangsan\",\n       Age:   18,\n       Score: 90.5,\n    }\n    t := reflect.TypeOf(st).Elem()\n    for i := 0; i \u003C t.NumField(); i++ {\n       f := t.Field(i)\n       fmt.Println(f.Tag)\n    }\n}\n",[25,7909,7910,7916,7920,7928,7938,7948,7952,7956,7968,7979,7990,8001,8005,8009,8023,8037,8049,8061,8073,8081,8107,8139,8159,8176,8184],{"__ignoreMap":99},[103,7911,7912,7914],{"class":105,"data-line":106,"line":106},[103,7913,110],{"class":109},[103,7915,114],{"class":113},[103,7917,7918],{"class":105,"data-line":117,"line":117},[103,7919,121],{"emptyLinePlaceholder":120},[103,7921,7922,7924,7926],{"class":105,"data-line":124,"line":124},[103,7923,127],{"class":109},[103,7925,131],{"class":130},[103,7927,135],{"class":134},[103,7929,7930,7932,7934,7936],{"class":105,"data-line":138,"line":138},[103,7931,142],{"class":141},[103,7933,146],{"class":145},[103,7935,149],{"class":113},[103,7937,152],{"class":145},[103,7939,7940,7942,7944,7946],{"class":105,"data-line":155,"line":155},[103,7941,142],{"class":141},[103,7943,146],{"class":145},[103,7945,27],{"class":113},[103,7947,152],{"class":145},[103,7949,7950],{"class":105,"data-line":166,"line":166},[103,7951,169],{"class":134},[103,7953,7954],{"class":105,"data-line":172,"line":172},[103,7955,121],{"emptyLinePlaceholder":120},[103,7957,7958,7960,7962,7964,7966],{"class":105,"data-line":177,"line":177},[103,7959,180],{"class":109},[103,7961,183],{"class":113},[103,7963,186],{"class":109},[103,7965,131],{"class":130},[103,7967,191],{"class":134},[103,7969,7970,7972,7974,7976],{"class":105,"data-line":194,"line":194},[103,7971,142],{"class":141},[103,7973,1460],{"class":130},[103,7975,4162],{"class":109},[103,7977,7978],{"class":145},"  `json:\"name\"`\n",[103,7980,7981,7983,7985,7987],{"class":105,"data-line":205,"line":205},[103,7982,142],{"class":141},[103,7984,1469],{"class":130},[103,7986,848],{"class":109},[103,7988,7989],{"class":145},"     `json:\"age\"`\n",[103,7991,7992,7994,7996,7998],{"class":105,"data-line":216,"line":216},[103,7993,142],{"class":141},[103,7995,1478],{"class":130},[103,7997,4372],{"class":109},[103,7999,8000],{"class":145}," `json:\"score\"`\n",[103,8002,8003],{"class":105,"data-line":222,"line":222},[103,8004,219],{"class":134},[103,8006,8007],{"class":105,"data-line":227,"line":227},[103,8008,121],{"emptyLinePlaceholder":120},[103,8010,8011,8013,8015,8017,8019,8021],{"class":105,"data-line":246,"line":246},[103,8012,230],{"class":109},[103,8014,233],{"class":113},[103,8016,236],{"class":134},[103,8018,239],{"class":134},[103,8020,131],{"class":130},[103,8022,191],{"class":134},[103,8024,8025,8027,8029,8031,8033,8035],{"class":105,"data-line":267,"line":267},[103,8026,142],{"class":141},[103,8028,328],{"class":130},[103,8030,275],{"class":109},[103,8032,3261],{"class":109},[103,8034,492],{"class":113},[103,8036,191],{"class":284},[103,8038,8039,8041,8043,8045,8047],{"class":105,"data-line":292,"line":292},[103,8040,142],{"class":141},[103,8042,342],{"class":141},[103,8044,1528],{"class":130},[103,8046,348],{"class":145},[103,8048,351],{"class":130},[103,8050,8051,8053,8055,8057,8059],{"class":105,"data-line":318,"line":318},[103,8052,142],{"class":141},[103,8054,342],{"class":141},[103,8056,1541],{"class":130},[103,8058,364],{"class":263},[103,8060,351],{"class":130},[103,8062,8063,8065,8067,8069,8071],{"class":105,"data-line":323,"line":323},[103,8064,142],{"class":141},[103,8066,342],{"class":141},[103,8068,1554],{"class":130},[103,8070,2899],{"class":263},[103,8072,351],{"class":130},[103,8074,8075,8077,8079],{"class":105,"data-line":337,"line":337},[103,8076,142],{"class":141},[103,8078,99],{"class":130},[103,8080,219],{"class":284},[103,8082,8083,8085,8087,8089,8091,8093,8095,8097,8099,8101,8103,8105],{"class":105,"data-line":354,"line":354},[103,8084,142],{"class":141},[103,8086,2916],{"class":130},[103,8088,275],{"class":109},[103,8090,278],{"class":130},[103,8092,281],{"class":113},[103,8094,236],{"class":284},[103,8096,394],{"class":130},[103,8098,239],{"class":284},[103,8100,1654],{"class":130},[103,8102,3366],{"class":113},[103,8104,236],{"class":284},[103,8106,169],{"class":284},[103,8108,8109,8111,8113,8115,8117,8119,8121,8123,8125,8127,8129,8131,8133,8135,8137],{"class":105,"data-line":369,"line":369},[103,8110,142],{"class":141},[103,8112,2034],{"class":109},[103,8114,2332],{"class":130},[103,8116,275],{"class":109},[103,8118,2337],{"class":263},[103,8120,2340],{"class":130},[103,8122,2343],{"class":109},[103,8124,3008],{"class":130},[103,8126,1610],{"class":113},[103,8128,236],{"class":284},[103,8130,239],{"class":284},[103,8132,2356],{"class":130},[103,8134,2359],{"class":109},[103,8136,131],{"class":130},[103,8138,191],{"class":284},[103,8140,8141,8143,8145,8147,8149,8151,8153,8155,8157],{"class":105,"data-line":378,"line":378},[103,8142,142],{"class":141},[103,8144,342],{"class":141},[103,8146,6939],{"class":130},[103,8148,275],{"class":109},[103,8150,3008],{"class":130},[103,8152,1644],{"class":113},[103,8154,236],{"class":311},[103,8156,2384],{"class":130},[103,8158,169],{"class":311},[103,8160,8161,8163,8165,8167,8169,8171,8174],{"class":105,"data-line":399,"line":399},[103,8162,142],{"class":141},[103,8164,342],{"class":141},[103,8166,297],{"class":130},[103,8168,300],{"class":113},[103,8170,236],{"class":311},[103,8172,8173],{"class":130},"f.Tag",[103,8175,169],{"class":311},[103,8177,8178,8180,8182],{"class":105,"data-line":421,"line":421},[103,8179,142],{"class":141},[103,8181,99],{"class":130},[103,8183,219],{"class":284},[103,8185,8186],{"class":105,"data-line":1761,"line":1761},[103,8187,219],{"class":134},[14,8189,426],{},[94,8191,8194],{"className":8192,"code":8193,"language":432,"meta":99},[430],"json:\"name\"\njson:\"age\"\njson:\"score\"\n",[25,8195,8193],{"__ignoreMap":99},[10,8197,8198],{"id":8198},"反射的优缺点",[14,8200,8201],{},"优点：",[4662,8203,8204],{},[4665,8205,8206],{},"可以提升程序代码的灵活性，根据条件在程序运行时灵活的调用函数，并且修改源代码结构",[14,8208,8209],{},"缺点：",[4662,8211,8212],{},[4665,8213,8214],{},"主要是性能影响，反射过程中会有大量的内存开辟和 gc 过程，导致程序的性能降低",[8216,8217,8218],"style",{},"html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sSDpw, html code.shiki .sSDpw{--shiki-default:#005cc5;--shiki-dark:#79b8ff}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sJX2D, html code.shiki .sJX2D{--shiki-default:#e36209;--shiki-dark:#ffab70}html pre.shiki code .sqkie, html code.shiki .sqkie{--shiki-default:#5a32a3;--shiki-dark:#b392f0}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":99,"searchDepth":138,"depth":138,"links":8220},[8221,8222,8227,8242,8245],{"id":12,"depth":117,"text":12},{"id":19,"depth":117,"text":20,"children":8223},[8224,8225,8226],{"id":73,"depth":124,"text":74},{"id":520,"depth":124,"text":521},{"id":838,"depth":124,"text":839},{"id":1224,"depth":117,"text":1224,"children":8228},[8229,8234,8240,8241],{"id":1227,"depth":124,"text":1227,"children":8230},[8231,8232,8233],{"id":1389,"depth":138,"text":1390},{"id":1878,"depth":138,"text":1879},{"id":2214,"depth":138,"text":2215},{"id":2638,"depth":124,"text":2638,"children":8235},[8236,8237,8238,8239],{"id":2742,"depth":138,"text":2743},{"id":3141,"depth":138,"text":3141},{"id":3586,"depth":138,"text":3586},{"id":4034,"depth":138,"text":4035},{"id":4780,"depth":124,"text":4780},{"id":5747,"depth":124,"text":5747},{"id":7608,"depth":117,"text":7608,"children":8243},[8244],{"id":7897,"depth":124,"text":7608},{"id":8198,"depth":117,"text":8198},[8247],"Go语言","2025-08-21","反射是程序在运行时动态访问、检测和修改自身状态的能力，通过反射可以获取类型信息、调用方法或修改字段值。在Go语言中，反射由reflect包实现，核心是reflect.Type（类型接口）和reflect.Value（值结构体），分别对应接口的类型和值部分。反射常用于序列化、ORM框架等场景，但存在性能开销大、代码可读性差、破坏封装性等缺点。优化方法包括缓存反射结果、减少高频调用或使用替代方案（如泛型）。反射适合框架开发等动态需求场景，但业务代码中应谨慎使用",false,"md",null,{"slots":8254},{},"\u002F2025\u002F08\u002Fgo-reflect",{"text":8257,"minutes":8258,"time":8259,"words":8260},"25 min read",24.17,1450200,4834,{"title":5,"description":8249},{"loc":8255},"posts\u002F2025\u002F08\u002Fgo-reflect",[27],"tech","Ex70-JXlk7Ll7OENWuMNTL49AsdYeApuDDzfMbgxg-I",[8268,8273],{"title":8269,"path":8270,"stem":8271,"date":8272,"type":8265,"children":-1},"Go Context 原理与使用实践","\u002F2025\u002F08\u002Fgo-context1","posts\u002F2025\u002F08\u002Fgo-context1","2025-08-20",{"title":8274,"path":8275,"stem":8276,"date":8248,"type":8265,"children":-1},"Go Timer 与 Ticker 定时器详解","\u002F2025\u002F08\u002Fgo-timer","posts\u002F2025\u002F08\u002Fgo-timer",1786555056249]