[{"data":1,"prerenderedAt":491},["ShallowReactive",2],{"content:\u002F2025\u002F09\u002Fgo-method-up":3,"surround:\u002F2025\u002F09\u002Fgo-method-up":480},{"id":4,"title":5,"body":6,"categories":458,"date":460,"description":461,"draft":462,"extension":463,"image":464,"meta":465,"navigation":50,"path":467,"permalink":464,"published":464,"readingTime":468,"recommend":464,"references":464,"seo":473,"sitemap":474,"stem":475,"tags":476,"type":477,"updated":478,"__hash__":479},"content\u002Fposts\u002F2025\u002F09\u002Fgo-method-up.md","Go 方法提升与嵌入类型",{"type":7,"value":8,"toc":456},"minimark",[9,13,16,19,22,433,436,443,452],[10,11,12],"p",{},"在go的源码中经常看到这种形式",[10,14,15],{},"结构体经常嵌套一个匿名的接口，这样写的要求是当前结构体实现了该接口的所有方法",[10,17,18],{},"struct嵌套interface",[10,20,21],{},"代码如下",[23,24,29],"pre",{"className":25,"code":26,"language":27,"meta":28,"style":28},"language-go shiki shiki-themes github-light github-dark","package main\n\nimport \"fmt\"\n\ntype Person struct {\n\tName string\n\tDog\n}\n\ntype Dog interface {\n\tEat()\n\tBark()\n}\n\ntype Husky struct {\n}\n\nfunc (h Husky) Eat() {\n\tfmt.Println(\"eat\")\n}\n\nfunc (h Husky) Bark() {\n\tfmt.Println(\"bark\")\n}\n\nfunc main() {\n\tp := Person{\n\t\tName: \"codepzj\",\n\t\tDog:  Husky{},\n\t}\n\n\tp.Eat()\n\tp.Bark()\n\n}\n","go","",[30,31,32,45,52,68,73,93,106,114,120,125,140,155,167,172,177,191,196,201,233,251,256,261,288,304,309,314,330,345,361,382,391,396,410,423,428],"code",{"__ignoreMap":28},[33,34,37,41],"span",{"class":35,"data-line":36,"line":36},"line",1,[33,38,40],{"class":39},"szBVR","package",[33,42,44],{"class":43},"sScJk"," main\n",[33,46,48],{"class":35,"data-line":47,"line":47},2,[33,49,51],{"emptyLinePlaceholder":50},true,"\n",[33,53,55,58,62,65],{"class":35,"data-line":54,"line":54},3,[33,56,57],{"class":39},"import",[33,59,61],{"class":60},"sZZnC"," \"",[33,63,64],{"class":43},"fmt",[33,66,67],{"class":60},"\"\n",[33,69,71],{"class":35,"data-line":70,"line":70},4,[33,72,51],{"emptyLinePlaceholder":50},[33,74,76,79,82,85,89],{"class":35,"data-line":75,"line":75},5,[33,77,78],{"class":39},"type",[33,80,81],{"class":43}," Person",[33,83,84],{"class":39}," struct",[33,86,88],{"class":87},"sVt8B"," ",[33,90,92],{"class":91},"sSDpw","{\n",[33,94,96,100,103],{"class":35,"data-line":95,"line":95},6,[33,97,99],{"class":98},"indent","\t",[33,101,102],{"class":87},"Name ",[33,104,105],{"class":39},"string\n",[33,107,109,111],{"class":35,"data-line":108,"line":108},7,[33,110,99],{"class":98},[33,112,113],{"class":43},"Dog\n",[33,115,117],{"class":35,"data-line":116,"line":116},8,[33,118,119],{"class":91},"}\n",[33,121,123],{"class":35,"data-line":122,"line":122},9,[33,124,51],{"emptyLinePlaceholder":50},[33,126,128,130,133,136,138],{"class":35,"data-line":127,"line":127},10,[33,129,78],{"class":39},[33,131,132],{"class":43}," Dog",[33,134,135],{"class":39}," interface",[33,137,88],{"class":87},[33,139,92],{"class":91},[33,141,143,145,148,152],{"class":35,"data-line":142,"line":142},11,[33,144,99],{"class":98},[33,146,147],{"class":43},"Eat",[33,149,151],{"class":150},"sJX2D","(",[33,153,154],{"class":150},")\n",[33,156,158,160,163,165],{"class":35,"data-line":157,"line":157},12,[33,159,99],{"class":98},[33,161,162],{"class":43},"Bark",[33,164,151],{"class":150},[33,166,154],{"class":150},[33,168,170],{"class":35,"data-line":169,"line":169},13,[33,171,119],{"class":91},[33,173,175],{"class":35,"data-line":174,"line":174},14,[33,176,51],{"emptyLinePlaceholder":50},[33,178,180,182,185,187,189],{"class":35,"data-line":179,"line":179},15,[33,181,78],{"class":39},[33,183,184],{"class":43}," Husky",[33,186,84],{"class":39},[33,188,88],{"class":87},[33,190,92],{"class":91},[33,192,194],{"class":35,"data-line":193,"line":193},16,[33,195,119],{"class":91},[33,197,199],{"class":35,"data-line":198,"line":198},17,[33,200,51],{"emptyLinePlaceholder":50},[33,202,204,207,209,211,215,218,221,223,225,227,229,231],{"class":35,"data-line":203,"line":203},18,[33,205,206],{"class":39},"func",[33,208,88],{"class":87},[33,210,151],{"class":91},[33,212,214],{"class":213},"s4XuR","h ",[33,216,217],{"class":43},"Husky",[33,219,220],{"class":91},")",[33,222,88],{"class":87},[33,224,147],{"class":43},[33,226,151],{"class":91},[33,228,220],{"class":91},[33,230,88],{"class":87},[33,232,92],{"class":91},[33,234,236,238,241,244,246,249],{"class":35,"data-line":235,"line":235},19,[33,237,99],{"class":98},[33,239,240],{"class":87},"fmt.",[33,242,243],{"class":43},"Println",[33,245,151],{"class":150},[33,247,248],{"class":60},"\"eat\"",[33,250,154],{"class":150},[33,252,254],{"class":35,"data-line":253,"line":253},20,[33,255,119],{"class":91},[33,257,259],{"class":35,"data-line":258,"line":258},21,[33,260,51],{"emptyLinePlaceholder":50},[33,262,264,266,268,270,272,274,276,278,280,282,284,286],{"class":35,"data-line":263,"line":263},22,[33,265,206],{"class":39},[33,267,88],{"class":87},[33,269,151],{"class":91},[33,271,214],{"class":213},[33,273,217],{"class":43},[33,275,220],{"class":91},[33,277,88],{"class":87},[33,279,162],{"class":43},[33,281,151],{"class":91},[33,283,220],{"class":91},[33,285,88],{"class":87},[33,287,92],{"class":91},[33,289,291,293,295,297,299,302],{"class":35,"data-line":290,"line":290},23,[33,292,99],{"class":98},[33,294,240],{"class":87},[33,296,243],{"class":43},[33,298,151],{"class":150},[33,300,301],{"class":60},"\"bark\"",[33,303,154],{"class":150},[33,305,307],{"class":35,"data-line":306,"line":306},24,[33,308,119],{"class":91},[33,310,312],{"class":35,"data-line":311,"line":311},25,[33,313,51],{"emptyLinePlaceholder":50},[33,315,317,319,322,324,326,328],{"class":35,"data-line":316,"line":316},26,[33,318,206],{"class":39},[33,320,321],{"class":43}," main",[33,323,151],{"class":91},[33,325,220],{"class":91},[33,327,88],{"class":87},[33,329,92],{"class":91},[33,331,333,335,338,341,343],{"class":35,"data-line":332,"line":332},27,[33,334,99],{"class":98},[33,336,337],{"class":87},"p ",[33,339,340],{"class":39},":=",[33,342,81],{"class":43},[33,344,92],{"class":150},[33,346,348,350,352,355,358],{"class":35,"data-line":347,"line":347},28,[33,349,99],{"class":98},[33,351,99],{"class":98},[33,353,354],{"class":87},"Name: ",[33,356,357],{"class":60},"\"codepzj\"",[33,359,360],{"class":87},",\n",[33,362,364,366,368,371,373,377,380],{"class":35,"data-line":363,"line":363},29,[33,365,99],{"class":98},[33,367,99],{"class":98},[33,369,370],{"class":87},"Dog:  ",[33,372,217],{"class":43},[33,374,376],{"class":375},"sqkie","{",[33,378,379],{"class":375},"}",[33,381,360],{"class":87},[33,383,385,387,389],{"class":35,"data-line":384,"line":384},30,[33,386,99],{"class":98},[33,388,28],{"class":87},[33,390,119],{"class":150},[33,392,394],{"class":35,"data-line":393,"line":393},31,[33,395,51],{"emptyLinePlaceholder":50},[33,397,399,401,404,406,408],{"class":35,"data-line":398,"line":398},32,[33,400,99],{"class":98},[33,402,403],{"class":87},"p.",[33,405,147],{"class":43},[33,407,151],{"class":150},[33,409,154],{"class":150},[33,411,413,415,417,419,421],{"class":35,"data-line":412,"line":412},33,[33,414,99],{"class":98},[33,416,403],{"class":87},[33,418,162],{"class":43},[33,420,151],{"class":150},[33,422,154],{"class":150},[33,424,426],{"class":35,"data-line":425,"line":425},34,[33,427,51],{"emptyLinePlaceholder":50},[33,429,431],{"class":35,"data-line":430,"line":430},35,[33,432,119],{"class":91},[10,434,435],{},"我们在初始化的时候直接赋值，然后通过Person就能调用Dog接口的Eat和Bark方法",[10,437,438,439],{},"这叫作",[440,441,442],"strong",{},"方法提升",[10,444,445,446],{},"详细资料可看：",[447,448,449],"a",{"href":449,"rel":450},"https:\u002F\u002Fjuejin.cn\u002Fpost\u002F7120219197799563278",[451],"nofollow",[453,454,455],"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 .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}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 .sJX2D, html code.shiki .sJX2D{--shiki-default:#e36209;--shiki-dark:#ffab70}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--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);}",{"title":28,"searchDepth":70,"depth":70,"links":457},[],[459],"Go语言","2025-09-24","今天聊一下go的方法提升，在很多源码看到，查资料才发现可以这样用",false,"md",null,{"slots":466},{},"\u002F2025\u002F09\u002Fgo-method-up",{"text":469,"minutes":470,"time":471,"words":472},"1 min read",0.78,46800,156,{"title":5,"description":461},{"loc":467},"posts\u002F2025\u002F09\u002Fgo-method-up",[27],"tech","2025-09-27","41phLM5PGE_Xjfph9Br0VGguEh2AsbBt6eUmKuLNHSs",[481,486],{"title":482,"path":483,"stem":484,"date":485,"type":477,"children":-1},"docker部署mysql中文乱码问题","\u002F2025\u002F09\u002Fdocker-mysql-charset-problem","posts\u002F2025\u002F09\u002Fdocker-mysql-charset-problem","2025-09-17",{"title":487,"path":488,"stem":489,"date":490,"type":477,"children":-1},"Redis 缓存穿透、击穿与雪崩","\u002F2025\u002F09\u002Fredis-ctjcxb","posts\u002F2025\u002F09\u002Fredis-ctjcxb","2025-09-25",1786555055312]