Heim Backend-Entwicklung PHP-Tutorial 由PHP底层工作原理说起_PHP教程

由PHP底层工作原理说起_PHP教程

Jul 13, 2016 am 10:28 AM
原理 底层

之前做过.net,java开发,也写过几个Php的网站,似乎3种主要编程语言都接触了。但是越来越觉得自己对编程的整个流程缺乏一个整体的认识,尤其是底层的机制。譬如网络编程,编译原理,服务器端,数据库存储引擎原理等。于是看了一些书,比较经典的有apue,unp,tcp/ip,nginx,mysql的innodb存储引擎,深入理解jvm。渐渐发现无论用什么语言做开发,背后都有linux,shell,c/c++,nginx服务器,mysql的身影。也许只有掌握了这些核心的原理知识,一个程序员才具有核心竞争力。

BAT的后端部分都是离不开这些核心技术的,只是前端(业务逻辑层)会有差别。譬如淘宝主要采用java,百度主要采用php。而腾讯是个工具控集团,主要采用c/c++技术。腾讯的主要的产品都是windows下的各种客户端(qq,输入法,music...最重要的是游戏)以及服务器端。相对而言,web产品是比较少的(qq空间,朋友网等),这些web产品以及比较成熟了,只是偶尔会做一下改进而已。除非有新的产品出现,不然不会有大量的人才需求。

虽然目前机器学习,大数据挖掘领域人才需求貌似比较旺盛,但是相关的技术还是要建立在Linux,jvm上面。某些公司对java人才的需求会进一步增长。

既然了解了c语言编译以及连接的过程,java的jvm下的运行机制,突然好奇php的运行流程,机制和原理也。找了几篇博客,大概了解了一下。先放到下面:

PHP底层工作原理

简介
  先看看下面这个过程:

    我们从未手动开启过PHP的相关进程,它是随着Apache的启动而运行的;PHP通过mod_php5.so模块和Apache相连(具体说来是SAPI,即服务器应用程序编程接口);PHP总共有三个模块:内核、Zend引擎、以及扩展层;PHP内核用来处理请求、文件流、错误处理等相关操作;Zend引擎(ZE)用以将源文件转换成机器语言,然后在虚拟机上运行它;扩展层是一组函数、类库和流,PHP使用它们来执行一些特定的操作。比如,我们需要mysql扩展来连接MySQL数据库;当ZE执行程序时可能会需要连接若干扩展,这时ZE将控制权交给扩展,等处理完特定任务后再返还;最后,ZE将程序运行结果返回给PHP内核,它再将结果传送给SAPI层,最终输出到浏览器上。

    深入探讨
      等等,没有这么简单。以上过程只是个简略版,让我们再深入挖掘一下,看看幕后还发生了些什么。

      Apache启动后,PHP解释程序也随之启动;PHP的启动过程有两步;第一步是初始化一些环境变量,这将在整个SAPI生命周期中发生作用;第二步是生成只针对当前请求的一些变量设置。

      PHP启动第一步
        不清楚什么第一第二步是什么?别担心,我们接下来详细讨论一下。让我们先看看第一步,也是最主要的一步。要记住的是,第一步的操作在任何请求到达之前就发生了。

        启动Apache后,PHP解释程序也随之启动;PHP调用各个扩展的MINIT方法,从而使这些扩展切换到可用状态。看看php.ini文件里打开了哪些扩展吧;MINIT的意思是“模块初始化”。各个模块都定义了一组函数、类库等用以处理其他请求。

          一个典型的MINIT方法如下:
        PHP_MINIT_FUNCTION(extension_name){
        /* Initialize functions, classes etc */
        }
        PHP启动第二步

          当一个页面请求发生时,SAPI层将控制权交给PHP层。于是PHP设置了用于回复本次请求所需的环境变量。同时,它还建立一个变量表,用来存放执行过程中产生的变量名和值。PHP调用各个模块的RINIT方法,即“请求初始化”。一个经典的例子是Session模块的RINIT,如果在php.ini中启用了Session模块,那在调用该模块的RINIT时就会初始化$_SESSION变量,并将相关内容读入;RINIT方法可以看作是一个准备过程,在程序执行之间就会自动启动。

            一个典型的RINIT方法如下:
          PHP_RINIT_FUNCTION(extension_name) {
          /* Initialize session variables, pre-populate variables, redefine global variables etc */
          }
          PHP关闭第一步
            如同PHP启动一样,PHP的关闭也分两步:

            一旦页面执行完毕(无论是执行到了文件末尾还是用exit或die函数中止),PHP就会启动清理程序。它会按顺序调用各个模块的RSHUTDOWN方法。RSHUTDOWN用以清除程序运行时产生的符号表,也就是对每个变量调用unset函数。

              一个典型的RSHUTDOWN方法如下:
            PHP_RSHUTDOWN_FUNCTION(extension_name) {
            /* Do memory management, unset all variables used in the last PHP call etc */
            }
            PHP关闭第二步
              最后,所有的请求都已处理完毕,SAPI也准备关闭了,PHP开始执行第二步:

              PHP调用每个扩展的MSHUTDOWN方法,这是各个模块最后一次释放内存的机会。

                一个典型的RSHUTDOWN方法如下:
              PHP_MSHUTDOWN_FUNCTION(extension_name) {
              /* Free handlers and persistent memory etc */
              }
                这样,整个PHP生命周期就结束了。要注意的是,只有在服务器没有请求的情况下才会执行“启动第一步”和“关闭第二步”。

              下面的是用一些图示来说明的!

              PHP底层工作原理

              wps_clip_image-29471

              图1 php结构

              从图上可以看出,php从下到上是一个4层体系

              ①Zend引擎

              Zend整体用纯c实现,是php的内核部分,它将php代码翻译(词法、语法解析等一系列编译过程)为可执行opcode的处理并实现相应的处理方法、实现了基本的数据结构(如hashtable、oo)、内存分配及管理、提供了相应的api方法供外部调用,是一切的核心,所有的外围功能均围绕zend实现。

              ②Extensions

              围绕着zend引擎,extensions通过组件式的方式提供各种基础服务,我们常见的各种内置函数(如array系列)、标准库等都是通过extension来实现,用户也可以根据需要实现自己的extension以达到功能扩展、性能优化等目的(如贴吧正在使用的php中间层、富文本解析就是extension的典型应用)。

              ③Sapi

              Sapi全称是Server Application Programming Interface,也就是服务端应用编程接口,sapi通过一系列钩子函数,使得php可以和外围交互数据,这是php非常优雅和成功的一个设计,通过sapi成功的将php本身和上层应用解耦隔离,php可以不再考虑如何针对不同应用进行兼容,而应用本身也可以针对自己的特点实现不同的处理方式。后面将在sapi章节中介绍

              ④上层应用

              这就是我们平时编写的php程序,通过不同的sapi方式得到各种各样的应用模式,如通过webserver实现web应用、在命令行下以脚本方式运行等等。

              构架思想:

              引擎(Zend)+组件(ext)的模式降低内部耦合

              中间层(sapi)隔绝web server和php

              **************************************************************************

              如果php是一辆车,那么

              车的框架就是php本身

              Zend是车的引擎(发动机)

              Ext下面的各种组件就是车的轮子

              Sapi可以看做是公路,车可以跑在不同类型的公路上

              而一次php程序的执行就是汽车跑在公路上。

              因此,我们需要:性能优异的引擎+合适的车轮+正确的跑道

              Apache和php的关系

              Apache对于php的解析,就是通过众多Module中的php Module来完成的。

              wps_clip_image-31721

              把php最终集成到Apache系统中,还需要对Apache进行一些必要的设置。这里,我们就以php的mod_php5 SAPI运行模式为例进行讲解,至于SAPI这个概念后面我们还会详细讲解。

              假定我们安装的版本是Apache2 和 Php5,那么需要编辑Apache的主配置文件http.conf,在其中加入下面的几行内容:

              Unix/Linux环境下:

              LoadModule php5_module modules/mod_php5.so

              AddType application/x-httpd-php .php

              注:其中modules/mod_php5.so 是X系统环境下mod_php5.so文件的安装位置。

              Windows环境下:

              LoadModule php5_module d:/php/php5apache2.dll

              AddType application/x-httpd-php .php

              注:其中d:/php/php5apache2.dll 是在Windows环境下php5apache2.dll文件的安装位置。

              这两项配置就是告诉Apache Server,以后收到的Url用户请求,凡是以php作为后缀,就需要调用php5_module模块(mod_php5.so/ php5apache2.dll)进行处理。

              Apache的生命周期

              \

              Apach的请求处理流程

              \

              Apache请求处理循环详解
              Apache请求处理循环的11个阶段都做了哪些事情呢?(这11个阶段难道就是nginx中对应的11个处理阶段???)喎?http://www.Bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+CjGholBvc3QtUmVhZC1SZXF1ZXN0vde2zjwvcD4KPHA+CiAgICDU2tX9s6PH68fztKbA7cH3s8zW0KOs1eLKx8Sjv+m/ydLUsuXI67mz19O1xLXa0ru49r3Xts6ho7bU09rEx9Cpz+u63NTnvfjI67SmwO3H68fztcTEo7/pwLTLtaOs1eK49r3Xts6/ydLUsbvA+9PDoaM8L3A+CjxwPgogICAgMqGiVVJJIFRyYW5zbGF0aW9uvde2ziA8YnI+CiAgICBBcGFjaGXU2rG+vde2zrXE1vfSqrmk1/ejur2rx+vH87XEVVJM07PJ5LW9sb612M7EvP7Ptc2zoaPEo7/pv8nS1NTa1eK917bOsuXI67mz19OjrNa00NDX1Ly6tcTTs8nkwt+8raGjbW9kX2FsaWFzvs3Kx8D708PV4rj2vde2zrmk1/e1xKGjPC9wPgo8cD4KICAgIDOhokhlYWRlciBQYXJzaW5nvde2ziA8YnI+CiAgICBBcGFjaGXU2rG+vde2zrXE1vfSqrmk1/ejurzssunH68fztcTNt7K/oaPTydPaxKO/6b/J0tTU2sfrx/O0psDtwfezzLXEyM66ztK7uPa148nP1rTQ0LzssunH68fzzbeyv7XEyM7O8aOs0vK0y9XiuPa5s9fTutzJ2bG7yrnTw6GjbW9kX3NldGVudmlmvs3Kx8D708PV4rj2vde2zrmk1/e1xKGjPC9wPgo8cD4KICAgIDShokFjY2VzcyBDb250cm9svde2ziA8YnI+CiAgICBBcGFjaGXU2rG+vde2zrXE1vfSqrmk1/ejurj5vt3F5NbDzsS8/rzssunKx7fx1MrQ7bfDzsrH68fztcTXytS0oaNBcGFjaGW1xLHq17zC37ytyrXP1sHL1MrQ7brNvty++Na4we6ho21vZF9hdXRoel9ob3N0vs3Kx8D708PV4rj2vde2zrmk1/e1xKGjPC9wPgo8cD4KICAgIDWhokF1dGhlbnRpY2F0aW9uvde2ziA8YnI+CiAgICAgQXBhY2hl1Nqxvr3Xts61xNb30qq5pNf3o7qwtNXVxeTWw87EvP7J6LaotcSy38LUttTTw7unvfjQ0MjP1qSjrLKiyei2qNPDu6fD+8f40/Kho8Sjv+m/ydLU1NrV4r3Xts6y5cjrubPX06OsyrXP1tK7uPbIz9akt723qKGjPC9wPgo8cD4KICAgIDahokF1dGhvcml6YXRpb26917bOIDxicj4KICAgIEFwYWNoZdTasb6917bOtcTW99KquaTX96O6uPm+3cXk1sPOxLz+vOyy6crHt/HUytDtyM/WpLn9tcTTw7un1rTQ0Mfrx/O1xLLZ1/eho8Sjv+m/ydLU1NrV4r3Xts6y5cjrubPX06OsyrXP1tK7uPbTw7unyKjP3rncwO21xLe9t6ihozwvcD4KPHA+CiAgICA3oaJNSU1FIFR5cGUgQ2hlY2tpbme917bOIDxicj4KICAgIEFwYWNoZdTasb6917bOtcTW99KquaTX96O6uPm+3cfrx/PXytS0tcRNSU1FwODQzbXEz+C52Lnm1PKjrMXQtqi9q9KqyrnTw7XExNrI3bSmwO26r8r9oaOx6te8xKO/6W1vZF9uZWdvdGlhdGlvbrrNbW9kX21pbWXKtc/WwcvV4rj2ubPX06GjPC9wPgo8cD4KICAgIDihokZpeFVwvde2ziA8YnI+CiAgICDV4srH0ru49s2o08O1xL3Xts6jrNTK0O3Eo7/p1NrE2sjdyfqzycb31q7HsKOs1MvQ0MjOus6x2NKqtcS0psDtwfezzKGjus1Qb3N0X1JlYWRfUmVxdWVzdMDgJiMyMDI4NDujrNXiysfSu7j2xNy5u7K2u/HIzrrO0MXPorXEubPX06Os0rLKx9fus6PKudPDtcS5s9fToaM8L3A+CjxwPgogICAgOaGiUmVzcG9uc2W917bOIDxicj4KICAgIEFwYWNoZdTasb6917bOtcTW99KquaTX96O6yfqzybe1u9i/zbuntsu1xMTayN2jrLi61PC4+L/Nu6e2y7eiy83Su7j2x6G1sbXEu9i4tKGj1eK49r3Xts7Kx9X7uPa0psDtwfezzLXEusvQxLK/t9ahozwvcD4KPHA+CiAgICAxMKGiTG9nZ2luZ73Xts4gPGJyPgogICAgQXBhY2hl1Nqxvr3Xts61xNb30qq5pNf3o7rU2rvYuLTS0b6tt6LLzbj4v827p7bL1q6687zHwrzKws7xoaPEo7/pv8nE3NDeuMS78tXfzOa7u0FwYWNoZbXEserXvMjV1r68x8K8oaM8L3A+CjxwPgoxMaGiQ2xlYW5VcL3Xts4gPGJyPgogICAgQXBhY2hl1Nqxvr3Xts61xNb30qq5pNf3o7rH5cDtsb60zsfrx/PKws7xtKbA7c3qs8nWrrrz0sXB9LXEu7e+s6OsscjI587EvP6hosS/wry1xLSmwO278tXfU29ja2V0tcS52LHVtci1yKOs1eLKx0FwYWNoZdK7tM7H68fztKbA7bXE1+6689K7uPa917bOoaM8L3A+CjxwPgo8c3Ryb25nPkxBTVC83Lm5o7o8L3N0cm9uZz48L3A+CjxwPgo8aW1nIHNyYz0="http://www.2cto.com/uploadfile/Collfiles/20140607/20140607091102327.gif" alt="b簗﹊萟?钅裣i啔a篧殽?{鷌?*??s钠拽?'瞝_椐鷌糙铻於?凓i嗃i?耉檐y?m4簖html

              百度研发中心的博客http://stblog.baidu-tech.com/?p=763

              王兴宾的博客http://blog.csdn.net/wanghao72214/article/details/3916825

              www.bkjia.comtruehttp://www.bkjia.com/PHPjc/780964.htmlTechArticle之前做过.net,java开发,也写过几个Php的网站,乎3种主要编程语言都接触了。但是越来越觉得自己对编程的整个流程缺乏一个整体的认识,...
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

<🎜>: Bubble Gum Simulator Infinity - So erhalten und verwenden Sie Royal Keys
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Fusionssystem, erklärt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Flüstern des Hexenbaum
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Java-Tutorial
1669
14
PHP-Tutorial
1273
29
C#-Tutorial
1256
24
Analyse der Funktion und des Prinzips von Nohup Analyse der Funktion und des Prinzips von Nohup Mar 25, 2024 pm 03:24 PM

Analyse der Rolle und des Prinzips von nohup In Unix und Unix-ähnlichen Betriebssystemen ist nohup ein häufig verwendeter Befehl, mit dem Befehle im Hintergrund ausgeführt werden können. Selbst wenn der Benutzer die aktuelle Sitzung verlässt oder das Terminalfenster schließt, kann der Befehl ausgeführt werden werden weiterhin ausgeführt. In diesem Artikel werden wir die Funktion und das Prinzip des Nohup-Befehls im Detail analysieren. 1. Die Rolle von Nohup: Befehle im Hintergrund ausführen: Mit dem Befehl Nohup können wir Befehle mit langer Laufzeit weiterhin im Hintergrund ausführen lassen, ohne dass dies dadurch beeinträchtigt wird, dass der Benutzer die Terminalsitzung verlässt. Dies muss ausgeführt werden

Ausführliche Diskussion der Prinzipien und Praktiken des Struts-Frameworks Ausführliche Diskussion der Prinzipien und Praktiken des Struts-Frameworks Feb 18, 2024 pm 06:10 PM

Prinzipielle Analyse und praktische Erkundung des Struts-Frameworks. Als häufig verwendetes MVC-Framework in der JavaWeb-Entwicklung verfügt das Struts-Framework über gute Entwurfsmuster und Skalierbarkeit und wird häufig in der Anwendungsentwicklung auf Unternehmensebene verwendet. In diesem Artikel werden die Prinzipien des Struts-Frameworks analysiert und anhand tatsächlicher Codebeispiele untersucht, um den Lesern zu helfen, das Framework besser zu verstehen und anzuwenden. 1. Analyse der Prinzipien des Struts-Frameworks 1. MVC-Architektur Das Struts-Framework basiert auf MVC (Model-View-Con

Vertiefendes Verständnis des Batch-Insert-Implementierungsprinzips in MyBatis Vertiefendes Verständnis des Batch-Insert-Implementierungsprinzips in MyBatis Feb 21, 2024 pm 04:42 PM

MyBatis ist ein beliebtes Java-Persistenzschicht-Framework, das in verschiedenen Java-Projekten häufig verwendet wird. Unter diesen ist das Einfügen von Stapeln ein häufiger Vorgang, der die Leistung von Datenbankvorgängen effektiv verbessern kann. In diesem Artikel wird das Implementierungsprinzip von Batch Insert in MyBatis eingehend untersucht und anhand spezifischer Codebeispiele detailliert analysiert. Batch-Einfügung in MyBatis In MyBatis werden Batch-Einfügungsvorgänge normalerweise mit dynamischem SQL implementiert. Durch Konstruieren eines S, das mehrere eingefügte Werte enthält

Ausführliche Erläuterung des Prinzips des MyBatis-Paging-Plug-Ins Ausführliche Erläuterung des Prinzips des MyBatis-Paging-Plug-Ins Feb 22, 2024 pm 03:42 PM

MyBatis ist ein hervorragendes Persistenzschicht-Framework, das Datenbankoperationen basierend auf XML und Anmerkungen unterstützt. Es ist einfach und benutzerfreundlich und bietet außerdem einen umfangreichen Plug-In-Mechanismus. Unter diesen ist das Paging-Plugin eines der am häufigsten verwendeten Plug-Ins. Dieser Artikel befasst sich mit den Prinzipien des MyBatis-Paging-Plug-Ins und veranschaulicht es anhand konkreter Codebeispiele. 1. Paging-Plug-In-Prinzip MyBatis selbst bietet keine native Paging-Funktion, Sie können jedoch Plug-Ins verwenden, um Paging-Abfragen zu implementieren. Das Prinzip des Paging-Plug-Ins besteht hauptsächlich darin, MyBatis abzufangen

Eine ausführliche Diskussion der Funktionen und Prinzipien von Linux-RPM-Tools Eine ausführliche Diskussion der Funktionen und Prinzipien von Linux-RPM-Tools Feb 23, 2024 pm 03:00 PM

Das RPM-Tool (RedHatPackageManager) in Linux-Systemen ist ein leistungsstarkes Tool zum Installieren, Aktualisieren, Deinstallieren und Verwalten von Systemsoftwarepaketen. Es ist ein häufig verwendetes Tool zur Verwaltung von Softwarepaketen in RedHatLinux-Systemen und wird auch von vielen anderen Linux-Distributionen verwendet. Die Rolle des RPM-Tools ist sehr wichtig. Es ermöglicht Systemadministratoren und Benutzern die einfache Verwaltung von Softwarepaketen auf dem System. Über RPM können Benutzer problemlos neue Softwarepakete installieren und vorhandene Software aktualisieren

Eine ausführliche Analyse der Funktionen und Arbeitsprinzipien des Linux-Befehls chage Eine ausführliche Analyse der Funktionen und Arbeitsprinzipien des Linux-Befehls chage Feb 24, 2024 pm 03:48 PM

Der Befehl chage im Linux-System ist ein Befehl zum Ändern des Kennwortablaufdatums eines Benutzerkontos. Er kann auch zum Ändern des längsten und kürzesten nutzbaren Datums des Kontos verwendet werden. Dieser Befehl spielt eine sehr wichtige Rolle bei der Verwaltung der Benutzerkontosicherheit. Er kann die Nutzungsdauer von Benutzerkennwörtern effektiv steuern und die Systemsicherheit verbessern. So verwenden Sie den Befehl chage: Die grundlegende Syntax des Befehls chage lautet: chage [Option] Benutzername. Um beispielsweise das Ablaufdatum des Kennworts des Benutzers „testuser“ zu ändern, können Sie den folgenden Befehl verwenden

Astar-Absteckprinzip, Einkommensabbau, Airdrop-Projekte und -Strategien sowie Strategie auf Nanny-Ebene Astar-Absteckprinzip, Einkommensabbau, Airdrop-Projekte und -Strategien sowie Strategie auf Nanny-Ebene Jun 25, 2024 pm 07:09 PM

Inhaltsverzeichnis Astar Dapp Staking-Prinzip Staking-Einnahmen Abbau potenzieller Airdrop-Projekte: AlgemNeurolancheHealthreeAstar Degens DAOVeryLongSwap Staking-Strategie und -Betrieb „AstarDapp Staking“ wurde zu Beginn dieses Jahres auf die V3-Version aktualisiert, und es wurden viele Anpassungen an den Staking-Einnahmen vorgenommen Regeln. Derzeit ist der erste Absteckzyklus beendet und der Unterzyklus „Abstimmung“ des zweiten Absteckzyklus hat gerade erst begonnen. Um die „zusätzlichen Prämien“-Vorteile zu erhalten, müssen Sie diese kritische Phase (voraussichtlich bis zum 26. Juni dauernd, mit weniger als 5 verbleibenden Tagen) bewältigen. Ich werde die Astar-Einnahmen im Detail aufschlüsseln,

Die Grundprinzipien und Methoden zur Implementierung von Vererbungsmethoden in Golang Die Grundprinzipien und Methoden zur Implementierung von Vererbungsmethoden in Golang Jan 20, 2024 am 09:11 AM

Die Grundprinzipien und Implementierungsmethoden der Golang-Vererbungsmethoden In Golang ist die Vererbung eines der wichtigen Merkmale der objektorientierten Programmierung. Durch Vererbung können wir die Eigenschaften und Methoden der übergeordneten Klasse verwenden, um die Wiederverwendung und Erweiterbarkeit von Code zu erreichen. In diesem Artikel werden die Grundprinzipien und Implementierungsmethoden der Golang-Vererbungsmethode vorgestellt und spezifische Codebeispiele bereitgestellt. Das Grundprinzip der Vererbungsmethoden In Golang wird die Vererbung durch die Einbettung von Strukturen implementiert. Wenn eine Struktur in eine andere Struktur eingebettet ist, ist die eingebettete Struktur eingebettet

See all articles