{"id":3540,"date":"2021-07-01T10:28:10","date_gmt":"2021-07-01T02:28:10","guid":{"rendered":"https:\/\/wyxxt.org.cn\/?p=3540"},"modified":"2023-12-04T15:18:51","modified_gmt":"2023-12-04T07:18:51","slug":"go%e5%8f%8d%e5%b0%84","status":"publish","type":"post","link":"https:\/\/wyxxt.org.cn\/?p=3540","title":{"rendered":"go\u53cd\u5c04"},"content":{"rendered":"<h2>\u53cd\u5c04<\/h2>\n<p>\u5728reflect\u5305\u4e2d\uff0c\u4e3b\u8981\u901a\u8fc7Typeof()\u548cValueof()\u4e24\u4e2a\u65b9\u6cd5\u6765\u5b9e\u73b0\u53cd\u5c04\u3002\u4e24\u4e2a\u65b9\u6cd5\u76f8\u4e92\u7ed3\u5408\uff0c\u80fd\u591f\u53cd\u5c04\u51fa\u88ab\u53cd\u5c04\u51fd\u6570\u7684\u5168\u90e8\u4fe1\u606f\u3002<\/p>\n<pre><code class=\"language-go line-numbers\">\/**\n * Createby GoLand\n * User xzw jsjxzw@163.com\n * Date 2021\/7\/1\n * Time \u4e0b\u53486:02\n *\/\npackage main\n\nimport (\n    \"fmt\"\n    \"reflect\"\n)\n\ntype Ref struct {\n    id   int\n    name string\n}\n\nfunc (ref *Ref) GetName() {\n    fmt.Println(\"getName()\u51fd\u6570\")\n}\nfunc (ref *Ref) GetNameById() {\n    fmt.Println(\"getNameById()\u51fd\u6570\")\n}\nfunc main() {\n    ref := new(Ref)\n    t := reflect.TypeOf(ref)\n    v := reflect.ValueOf(ref)\n    fmt.Println(t)\n    fmt.Println(v)\n    for i := 0; i &lt; t.NumMethod(); i++ {\n        fmt.Println(t.Method(i).Name)\n        v.Method(i).Call(nil)\n    }\n}\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/oss.wyxxt.org.cn\/images\/2021\/09\/18\/wp_editor_md_2c4119e97576d95de57273b7855ca90f.jpg\" alt=\"\" \/><\/p>\n<h3>\u53cd\u5c04\u7684\u5b9e\u73b0\u8fc7\u7a0b<\/h3>\n<p>\u7531\u4e8e\u6709\u53cd\u5c04\u7684\u5b58\u5728\uff0c\u56e0\u6b64\u5728\u4f20\u7edf\u7684MVC\u7684\u8bbe\u8ba1\u6a21\u5f0f\u4e2d\uff0c\u5f53\u6211\u4eec\u6dfb\u52a0\u670d\u52a1\u65f6\uff0c\u4e0d\u9700\u8981\u4fee\u6539Controller\u7aef\u7684\u4ee3\u7801\uff0cController\u53ea\u9700\u8981\u7ef4\u6301\u4e00\u4e2amap\u7684\u8868\uff0c\u91cc\u9762\u7684\u5c31\u6765\u5b58\u50a8\u9700\u8981\u88ab\u53cd\u5c04\u7684models\u3002<\/p>\n<pre><code class=\"language-go line-numbers\">\/**\n * Createby GoLand\n * User xzw jsjxzw@163.com\n * Date 2021\/7\/1\n * Time \u4e0b\u53486:08\n *\/\n\npackage server\n\nimport (\n    \"fmt\"\n    \"reflect\"\n)\n\ntype ReServer struct {\n    M map[string]interface{}\n}\n\n\/\/ RegisterService \u6ce8\u518c\u670d\u52a1\nfunc (this *ReServer) RegisterService(service interface{}) {\n    serviceType := reflect.TypeOf(service).Elem()\n    ServiceName := serviceType.Name()\n    if _, ok := this.M[ServiceName]; ok {\n        fmt.Println(\"service has been registered\")\n    } else {\n        this.M[ServiceName] = service\n    }\n}\n\n\/\/  Start \u670d\u52a1\u542f\u52a8\n\/\/ c \u63a7\u5236\u5668\u540d\n\/\/ m \u65b9\u6cd5\u540d\nfunc (this *ReServer) Start(c, m string) {\n    for k, v := range this.M {\n        \/\/ \u91cc\u9762\u6839\u636e\u4e1a\u52a1\u903b\u8f91\u6267\u884c\u60f3\u8981\u7684\u65b9\u6cd5\n        if k == c {\n            v := reflect.ValueOf(v)\n            v.MethodByName(m).Call(nil)\n        }\n    }\n}\n\n<\/code><\/pre>\n<pre><code class=\"language-go line-numbers\">\/**\n * Createby GoLand\n * User xzw jsjxzw@163.com\n * Date 2021\/7\/1\n * Time \u4e0b\u53486:12\n *\/\n\npackage main\n\nimport (\n    \"imooc.com\/ccmouse\/learngo\/reflect\/2\/group\"\n    \"imooc.com\/ccmouse\/learngo\/reflect\/2\/server\"\n    \"imooc.com\/ccmouse\/learngo\/reflect\/2\/user\"\n)\n\nfunc main() {\n    reServer := &amp;server.ReServer{\n        M: make(map[string]interface{}),\n    }\n    user := &amp;user.User{\n        Id:   1,\n        Name: \"XZW\",\n        Age:  20,\n    }\n    reServer.RegisterService(user)\n\n    group := &amp;group.Group{\n        Id:   121,\n        Name: \"developer\",\n        Pid:  0,\n    }\n    reServer.RegisterService(group)\n\n    reServer.Start(\"Group\", \"Test\")\n}\n\n<\/code><\/pre>\n<pre><code class=\"language-go line-numbers\">\/**\n * Createby GoLand\n * User xzw jsjxzw@163.com\n * Date 2021\/7\/1\n * Time \u4e0b\u53486:16\n *\/\n\npackage user\n\nimport \"fmt\"\n\ntype User struct {\n    Id   int\n    Name string\n    Age  int\n}\n\nfunc (user *User) FunOne() {\n    fmt.Printf(\"user name %v,id %v,age %v\", user.Name, user.Id, user.Age)\n}\n\n<\/code><\/pre>\n<pre><code class=\"language-go line-numbers\">\/**\n * Createby GoLand\n * User xzw jsjxzw@163.com\n * Date 2021\/7\/1\n * Time \u4e0b\u53486:28\n *\/\n\npackage group\n\nimport \"fmt\"\n\ntype Group struct {\n    Id   int\n    Name string\n    Pid  int\n}\n\nfunc (group Group) Test() {\n    fmt.Printf(\"group name %v,id %v ,pid %v\", group.Name, group.Id, group.Pid)\n}\n\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\u53cd\u5c04 \u5728reflect\u5305\u4e2d\uff0c\u4e3b\u8981\u901a\u8fc7Typeof()\u548cValueof()\u4e24\u4e2a\u65b9\u6cd5\u6765\u5b9e\u73b0\u53cd\u5c04\u3002\u4e24\u4e2a\u65b9\u6cd5\u76f8\u4e92\u7ed3\u5408\uff0c [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[15],"tags":[398],"class_list":["post-3540","post","type-post","status-publish","format-standard","hentry","category-15","tag-go"],"_links":{"self":[{"href":"https:\/\/wyxxt.org.cn\/index.php?rest_route=\/wp\/v2\/posts\/3540","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wyxxt.org.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wyxxt.org.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wyxxt.org.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wyxxt.org.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3540"}],"version-history":[{"count":3,"href":"https:\/\/wyxxt.org.cn\/index.php?rest_route=\/wp\/v2\/posts\/3540\/revisions"}],"predecessor-version":[{"id":3546,"href":"https:\/\/wyxxt.org.cn\/index.php?rest_route=\/wp\/v2\/posts\/3540\/revisions\/3546"}],"wp:attachment":[{"href":"https:\/\/wyxxt.org.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3540"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wyxxt.org.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3540"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wyxxt.org.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3540"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}