当前位置: 首页 > news >正文

Go 语言中的 package main、 func main() 和main.go的使用规范

本文旨在解释 Go 语言中 package main 、 func main() 和main.go的关系及其使用规则,解决如下典型问题:

  • 是否可以在一个项目中定义多个 func main()?
  • 是否可以在非 package main 中写 func main()?
  • 多个文件中都写 func main() 会冲突吗?
  • main.go是必须的命名方式吗?
  • 正确的结构设计与推荐实践是什么?

🧱 一、核心概念

1.package main

  • 唯一被 Go 编译器当作“程序入口”的包名
  • 一个 Go 程序的 main() 函数 必须位于 package main 中

2.func main()

  • 程序启动的入口函数
  • 只能出现在 package main 中
  • 必须无参数、无返回值签名:func main()

3. main.go

main.go 是必须的吗?
❌ 不是必须的。Go 编译器只关心是否存在 package main + func main(),不关心文件名。

✅ 可以替换为:server.go, run.go, serverDemo.go等任意 .go 文件,只要包含合法的入口函数。

✅ 推荐仍使用 main.go 是为了:

目的说明
清晰可见一眼看出程序入口
工具兼容性好IDE 支持、自动化构建支持
团队协作统一降低沟通成本
问题答案
main.go 是否必须?❌ 不必须,只是惯例
能否换文件名,比如 serverDemo.go?✅ 完全可以
go run ./cmd/server 能执行非 main.go 吗?✅ 只要有 package main 和 func main() 就行
可以有多个 main.go 吗?✅ 可以,只要在不同目录下
一个包内能有多个 func main() 吗?❌ 绝对不行,会编译报错

⚠️ 二、几种典型使用场景分析**

情况 1:单个文件,package main + func main()

// hello.go
package mainimport "fmt"func main() {fmt.Println("Hello, World!")
}

✅ 可以直接编译运行:go run hello.go

** 情况 2:多个文件,同为 package main,仅一个 func main()**

// a.go
package main
func sayHello() { fmt.Println("Hi") }// b.go
package main
func main() { sayHello() }

✅ 可以编译运行,因为只有一个入口点 main(),其他函数是辅助逻辑。

情况 3:单个目录,多个文件,同为 package main,多个 func main()

// a.go
package main
func main() { fmt.Println("A") }// b.go
package main
func main() { fmt.Println("B") }

❌ 报错:

main redeclared in this block

Go 编译器会尝试将同一个 package main 的所有文件一起构建,多个 main() 冲突。

情况 4:package A 中写了 func main()

// x.go
package A
func main() { fmt.Println("Invalid main") }

❌ 报错(或被忽略):

编译不会出错,但 这个 main() 函数永远不会被调用,go run / go build 不会把它当作程序入口

情况 5:多个目录,各自有 package main 与 func main()

project/├── cmd/│   ├── server/│   │   └── main.go  ← package main, func main()│   └── client/│       └── main.go  ← package main, func main()└── internal/└── logic.go     ← package internal, 无 main

✅ 每个子目录可以单独编译、运行,形成多个可执行程序:

go run ./cmd/server
go run ./cmd/client

📌 三、最佳实践总结

目标推荐做法
项目中需要多个程序入口每个 main.go 放入独立目录(如 cmd/xxx/)
测试函数中使用 main()保证整个模块中只有一个 func main()
重复使用逻辑拆出到 internal/ 或 pkg/,用作库模块
快速测试多个模块用一个 test.go 主控入口,调用不同功能函数
非 main 包只能写辅助函数,不能包含 func main()

✅ 四、实用建议

  • 不要在非 package main 中写 func main();
  • 不要在多个文件中重复定义 main() 函数;
  • 通过拆目录 + 控制 package main 位置,实现多入口组织结构;
  • 使用 go run file.go 或 go run . 显式指定主入口路径。

🧭 五、错误参考示例对照

错误代码错误原因
多个 func main() 同在一个包冲突,Go 不允许多个入口
在 package xxx 中写 func main()不是入口包,运行时不会执行
把辅助函数放在 main 包中可运行,但不利于复用,建议移出

📚 六、附推荐目录结构

project/
├── go.mod
├── cmd/
│   ├── server/
│   │   └── main.go     # package main
│   └── client/
│       └── main.go     # package main
├── internal/
│   └── core/
│       └── logic.go    # package core
└── pkg/└── utils/└── log.go      # package utils

🚀 七、通过命令行子命令选择运行入口(推荐 CLI 框架)

为了在一个 main.go 中根据不同参数运行 server 或 client,可采用如下结构:
✅ 示例项目结构

cmd/├── main.go├── client.go   // func runClient()└── server.go   // func runServer()

✅ main.go 示例代码:

package mainimport ("flag""fmt""os"
)func main() {if len(os.Args) < 2 {fmt.Println("用法: go run main.go [server|client|test]")os.Exit(1)}mode := os.Args[1]switch mode {case "server":runServer()case "client":runClient()case "test":runTest()default:fmt.Println("未知模式:", mode)os.Exit(1)}
}

✅ 其它文件(server.go / client.go):

// client.go
package main
import "fmt"func runClient() {fmt.Println("🚀 Running client")
}
// server.go
package main
import "fmt"func runServer() {fmt.Println("🚀 Running server")
}

✅ 运行命令:

go run cmd/main.go server   # 启动 server
go run cmd/main.go client   # 启动 client
go run cmd/main.go test     # 启动 test 模块(如果定义了)

相关文章:

Go 语言中的 package main、 func main() 和main.go的使用规范

本文旨在解释 Go 语言中 package main 、 func main() 和main.go的关系及其使用规则&#xff0c;解决如下典型问题&#xff1a; 是否可以在一个项目中定义多个 func main()&#xff1f;是否可以在非 package main 中写 func main()&#xff1f;多个文件中都写 func main() 会冲…...

mac 终端 code 命令打开 vscode,修改 cursor占用

rm /usr/local/bin/code vim ~/.zshrc # 定义 cursor 函数&#xff0c;用于打开 Cursor 应用 function cursor {open -a "/Applications/Cursor.app" "$" }# 定义 code 函数&#xff0c;用于打开 Visual Studio Code function code {open -a "/Appli…...

【常用功能】下载文件和复制到剪切板

前言 前端人员在开发时经常会遇到&#xff1a; 后端给一个地址&#xff0c;需要去下载的需求。将页面的内容复制到剪切板 下载文件 我们先说下载文件&#xff0c;通常情况下我们会自己写上一个非常简单的工具函数。 思路如下&#xff1a; 创建一个a元素设置a元素跳转的链接…...

【ESP32-microros(vscode-Platformio)】

一、步骤 1、目前支持ESP32 2、同一个局域网 3、上位机要安装代理&#xff08;电脑或者linux设备&#xff09; 4、可直接通过USB下载&#xff0c;也可以使用官方烧录工具&#xff0c;具体的分区表地址要从USB烧录的时候日志查看&#xff0c;一共四个文件&#xff0c;第三个…...

如何使用AI辅助开发CSS3 - 通义灵码功能全解析

一、引言 CSS3 作为最新的 CSS 标准&#xff0c;引入了众多新特性&#xff0c;如弹性布局、网格布局等&#xff0c;极大地丰富了网页样式的设计能力。然而&#xff0c;CSS3 的样式规则繁多&#xff0c;记忆所有规则对于开发者来说几乎是不可能的任务。在实际开发中&#xff0c…...

OpenCV图像形态学详解

文章目录 一、什么是图像形态学&#xff1f;二、基本概念&#xff1a;结构元素三、基本形态学操作1. 腐蚀&#xff08;Erosion&#xff09;2. 膨胀&#xff08;Dilation&#xff09;3. 开运算&#xff08;Opening&#xff09;4. 闭运算&#xff08;Closing&#xff09; 四、高级…...

Java-servlet(完结篇)过滤器乱码解决与监听器

Java-servlet&#xff08;完结篇&#xff09;过滤器乱码解决与监听器 前言一、过滤器乱码解决二、监听器1. HttpSessionListener2. ServletContextListener3. ServletRequestListener 三、监听器的使用场景Java-servlet 结语 前言 在之前的 Java Servlet 学习中&#xff0c;我…...

【发布】dtns协议的js-sdk(实现a2a协议:agent2agent)

【发布】dtns协议的js-sdk&#xff08;实现a2a协议&#xff1a;agent2agent&#xff09; dtns协议简介 dtns协议是用于dtns.network分布式智体网络的通讯协议。主要目标是将各个独立的智体节点&#xff0c;通过dtns协议&#xff08;dtns.network&#xff09;连接在一起&#…...

深度学习总结(8)

模型工作流程 模型由许多层链接在一起组成&#xff0c;并将输入数据映射为预测值。随后&#xff0c;损失函数将这些预测值与目标值进行比较&#xff0c;得到一个损失值&#xff0c;用于衡量模型预测值与预期结果之间的匹配程度。优化器将利用这个损失值来更新模型权重。 下面是…...

[特殊字符] Hyperlane:为现代Web服务打造的高性能Rust文件上传解决方案

&#x1f680; Hyperlane&#xff1a;为现代Web服务打造的高性能Rust文件上传解决方案 ▎开发者必备&#xff1a;为什么选择Hyperlane处理大文件上传&#xff1f; 在实时数据爆炸式增长的时代&#xff0c;开发者面临两大核心挑战&#xff1a; 如何实现TB级大文件的可靠传输如…...

英伟达开源253B语言模型:Llama-3.1-Nemotron-Ultra-253B-v1 模型情况

Llama-3.1-Nemotron-Ultra-253B-v1 模型情况 1. 模型概述 Llama-3.1-Nemotron-Ultra-253B-v1 是一个基于 Meta Llama-3.1-405B-Instruct 的大型语言模型 (LLM)&#xff0c;专为推理、人类对话偏好和任务&#xff08;如 RAG 和工具调用&#xff09;而优化。该模型支持 128K 令…...

2025年智能合约玩法创新白皮书:九大核心模块与收益模型重构Web3经济范式

——从国库管理到动态激励的加密生态全栈解决方案 一、核心智能合约架构解析 1. 国库合约&#xff1a;生态财政中枢 作为协议的金库守卫者&#xff0c;国库合约通过多签冷钱包与跨链资产池实现资金沉淀。其创新点包括&#xff1a; 储备资产动态再平衡&#xff1a;采用预言机实…...

[250411] Meta 发布 Llama 4 系列 AI 模型 | Rust 1.86 引入重大语言特性

目录 Llama 4 家族登场&#xff1a;开启原生多模态 AI 创新新纪元Rust 1.86.0 版本发布亮点主要新特性与改进其他重要信息 Llama 4 家族登场&#xff1a;开启原生多模态 AI 创新新纪元 Meta AI 近日发布了其最新、最先进的 Llama 4 系列人工智能模型&#xff0c;标志着 AI 技术…...

缓存不只是加速器:深入理解 Redis 的底层机制

一、Redis 是什么&#xff1f;为什么我们需要它&#xff1f; Redis&#xff08;Remote Dictionary Server&#xff09;是一种高性能的内存型键值对数据库。 通俗地讲&#xff0c;它就像一个超快的、放在内存中的超级字典&#xff0c;你可以用它来存数据、查数据&#xff0c;而…...

windows虚拟内存

windows的虚拟内存只是 虚拟内存技术的一个拓展, 叫他分页文件更好, 真正的虚拟内存是 CPU 内存管理单元 用于调度物理内存和磁盘衍生出来的技术. 在此基础上, 虚拟内存会根据页表 去物理内存中找数据, 找不到就去磁盘找, 找到之后再登记到页表. 这里的磁盘就是window系统中所…...

Ajax------免刷新地前后端交互

本文略带PHP代码需要在PHP环境下使用 介绍 AJAX (Asynchronous JavaScript and XML) 是一种创建快速动态网页应用的开发技术&#xff0c;它允许网页在不重新加载整个页面的情况下&#xff0c;与服务器交换数据并更新部分网页内容。例如&#xff0c;在我们做爬虫的时候发现有些…...

python办公自动化---pdf文件的读取、添加水印

需要安装包&#xff1a;pdfminer、pypdf2 一、读取pdf中的内容 from pdfminer.converter import TextConverter from pdfminer.layout import LAParams from pdfminer.pdfdocument import PDFDocument from pdfminer.pdfinterp import PDFResourceManager, PDFPageInterprete…...

下一代数据架构全景:云原生实践、行业解法与 AI 底座 | Databend Meetup 成都站回顾

3 月底&#xff0c;Databend 2025 开年首场 Meetup 在成都多点公司成功举办&#xff01;活动特别邀请到四位重量级嘉宾&#xff1a;多点科技数据库架构师王春涛、多点DMALL数据平台负责人李铭、Databend联合创始人吴炳锡&#xff0c;以及鹏城实验室王璞博士。在春日的蓉城&…...

Kubernetes容器编排与云原生实践

第一部分&#xff1a;Kubernetes基础架构与核心原理 第1章 容器技术的演进与Kubernetes的诞生 1.1 虚拟化技术的三次革命 物理机时代&#xff1a;资源浪费严重&#xff0c;利用率不足15% 虚拟机突破&#xff1a;VMware与Hyper-V实现硬件虚拟化&#xff0c;利用率提升至50% …...

vue项目使用html2canvas和jspdf将页面导出成PDF文件

一、需求&#xff1a; 页面上某一部分内容需要生成pdf并下载 二、技术方案&#xff1a; 使用html2canvas和jsPDF插件 三、js代码 // 页面导出为pdf格式 import html2Canvas from "html2canvas"; import jsPDF from "jspdf"; import { uploadImg } f…...

JAVA实现在H5页面中点击链接直接进入微信小程序

在普通的Html5页面中如何实现点击URL链接直接进入微信小程序&#xff0c;不需要扫描小程序二维码&#xff1f; 网上介绍的很多方法是在小程序后台设置Schema&#xff0c;不过我进入我的小程序后台在开发设置里面 没有找到设置小程序Schema的地方&#xff0c;我是通过调用API接口…...

深入剖析 Kafka 的零拷贝原理:从操作系统到 Java 实践

Kafka 作为一款高性能的分布式消息系统&#xff0c;其卓越的吞吐量和低延迟特性得益于多种优化技术&#xff0c;其中“零拷贝”&#xff08;Zero-Copy&#xff09;是核心之一。零拷贝通过减少用户态与内核态之间的数据拷贝&#xff0c;提升了 Kafka 在消息传输中的效率。本文将…...

深度学习:AI 大模型时代的智能引擎

当 Deepspeek 以逼真到难辨真假的语音合成和视频生成技术横空出世&#xff0c;瞬间引发了全球对 AI 伦理与技术边界的激烈讨论。从伪造名人演讲、制造虚假新闻&#xff0c;到影视行业的特效革新&#xff0c;这项技术以惊人的速度渗透进大众视野。但在 Deepspeek 强大功能的背后…...

【Flask开发】嘿马文学web完整flask项目第4篇:4.分类,4.分类【附代码文档】

教程总体简介&#xff1a;2. 目标 1.1产品与开发 1.2环境配置 1.3 运行方式 1.4目录说明 1.5数据库设计 2.用户认证 Json Web Token(JWT) 3.书架 4.1分类列表 5.搜索 5.3搜索-精准&高匹配&推荐 6.小说 6.4推荐-同类热门推荐 7.浏览记录 8.1配置-阅读偏好 8.配置 9.1项目…...

【MySQL】002.MySQL数据库基础

文章目录 数据库基础1.1 什么是数据库1.2 基本使用创建数据库创建数据表表中插入数据查询表中的数据 1.3 主流数据库1.4 服务器&#xff0c;数据库&#xff0c;表关系1.5 MySQL架构1.6 SQL分类1.7 存储引擎1.7.1 存储引擎1.7.2 查看存储引擎1.7.3 存储引擎对比 前言&#xff1a…...

Python爬取视频的架构方案,Python视频爬取入门教程

文章目录 前言方案概述架构设计详细实现步骤1.环境准备2. 网页请求模块3. 网页解析模块4. 视频下载模块5. 异常处理与日志模块 代码示例&#xff1a;性能优化注意事项 前言 以下是一个全面的使用 Python 爬取视频的架构方案&#xff0c;包含方案概述、架构设计、详细实现步骤、…...

ERC-20 代币标准

文章目录 一、什么是 ERC-20&#xff1f;核心价值&#xff1a;互操作性简化开发生态基石 二、ERC-20 的六大核心功能基础功能授权与代理转账事件通知 三、ERC-20 代币的典型应用场景四、ERC-20 的技术优势与局限性优势&#xff1a;局限性&#xff1a; 五、ERC-20 代币的创建步骤…...

SpringBoot实战1

SpringBoot实战1 一、开发环境&#xff0c;环境搭建-----创建项目 通过传统的Maven工程进行创建SpringBoot项目 &#xff08;1&#xff09;导入SpringBoot项目开发所需要的依赖 一个父依赖&#xff1a;&#xff08;工件ID为&#xff1a;spring-boot-starter-parent&#xf…...

GSO-YOLO:基于全局稳定性优化的建筑工地目标检测算法解析

论文地址:https://arxiv.org/pdf/2407.00906 1. 论文概述 《GSO-YOLO: Global Stability Optimization YOLO for Construction Site Detection》提出了一种针对建筑工地复杂场景优化的目标检测模型。通过融合全局优化模块(GOM)​、稳定捕捉模块(SCM)​和创新的AIoU损失函…...

解读json.loads函数参数

json.loads()函数是解码JSON字符串为Python对象的核心工具。本文将深入探讨json.loads()函数的各个参数。 一、基本功能与输入类型 1. 功能概述 json.loads(s, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=N…...

2025.04.10-拼多多春招笔试第一题

📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 01. 神奇公园的福娃占卜 问题描述 LYA在一个神奇的公园里发现了一条特殊的小径,小径上排列着一群可爱的福娃玩偶。这条小径有 n n...

【学习笔记】CPU 的“超线程”是什么?

1. 什么是超线程&#xff1f; 超线程&#xff08;Hyper-Threading&#xff09;是Intel的技术&#xff0c;让一个物理CPU核心模拟出两个逻辑核心。 效果&#xff1a;4核CPU在系统中显示为8线程。 本质&#xff1a;通过复用空闲的硬件单元&#xff08;如ALU、FPU&#xff09;&a…...

Docker Harbor

下载Harbor安装包 wget https://github.com/goharbor/harbor/releases/download/v2.5.0/harbor-offline-installer-v2.5.0.tgz 解压安装包 tar xvf harbor-offline-installer-v2.5.0.tgz cd harbor 配置harbor vi harbor.yml hostname: registry.example.com # Harbor …...

天梯集训笔记整理

1.着色问题 直接标注哪些行和列是被标注过的&#xff0c;安全格子的数量就是未标注的行*列 #include <bits/stdc.h> using namespace std;const int N 1e510; int hang[N],lie[N];int main(){int n,m;cin>>n>>m;int q;cin>>q;while(q--){int x,y;ci…...

C语言复习笔记--指针(4)

在经过前几篇的复习后我们已经了解了大部分指针的类型,今天让我们继续复习指针的其他内容吧. 函数指针变量 函数指针变量的创建 什么是函数指针变量呢&#xff1f;函数指针变量应该是⽤来存放函数地址的&#xff0c;未来通过地址能够调⽤函数的。 那么函数是否有地址呢&#x…...

008二分答案+贪心判断——算法备赛

二分答案贪心判断 有些问题&#xff0c;从已知信息推出答案&#xff0c;细节太多&#xff0c;过程繁杂&#xff0c;不易解答。 从猜答案出发&#xff0c;贪心地判断该答案是否合法是个不错的思路&#xff0c;这要求所有可能的答案是单调的&#xff08;例&#xff1a;x满足条件…...

Netty之内存池的原理和实战

深入理解Netty的内存池机制及其应用实践 在高性能网络编程中&#xff0c;内存管理对于系统的稳定性和性能至关重要。Netty作为一个高效的网络通信框架&#xff0c;通过引入内存池机制有效地解决了内存分配和回收频繁带来的性能瓶颈和内存碎片问题。本文将深入探讨Netty内存池的…...

Elasticsearch 向量数据库,原生支持 Google Cloud Vertex AI 平台

作者&#xff1a;来自 Elastic Valerio Arvizzigno Elasticsearch 将作为第一个第三方原生语义对齐引擎&#xff0c;支持 Google Cloud 的 Vertex AI 平台和 Google 的 Gemini 模型。这使得联合用户能够基于企业数据构建完全可定制的生成式 AI 体验&#xff0c;并借助 Elastics…...

《算法笔记》3.1小节——入门模拟->简单模拟

1001 害死人不偿命的(3n1)猜想 #include <iostream> using namespace std;int main() {int n,count0;cin>>n;while(n!1){if(n%20) n/2;else n(3*n1)/2;count1;}std::cout <<count;return 0; }1032 挖掘机技术哪家强 #include <iostream> using namespa…...

每日一题(小白)暴力娱乐篇24

由题已知这是一个匹配题目&#xff0c;题目已经说了三阶幻方是给定的&#xff0c;经过镜像和旋转&#xff0c;镜像*2旋转*4&#xff1b; 总共八种方案&#xff0c;然后接收每次的数据去匹配&#xff08;跳过0&#xff09;&#xff0c;如果匹配就输出匹配的数组&#xff0c;如果…...

C++:函数模板类模板

程序员Amin &#x1f648;作者简介&#xff1a;练习时长两年半&#xff0c;全栈up主 &#x1f649;个人主页&#xff1a;程序员Amin &#x1f64a; P   S : 点赞是免费的&#xff0c;却可以让写博客的作者开心好久好久&#x1f60e; &#x1f4da;系列专栏&#xff1a;Java全…...

第18章:基于Global Context Vision Transformers(GCTx_unet)网络实现的oct图像中的黄斑水肿和裂孔分割

1. 网络概述 GCTx-UNET是基于传统UNet架构的改进版本&#xff0c;主要引入了以下几个关键创新&#xff1a; GCT模块&#xff1a;全局上下文变换器(Global Context Transformer)模块 多尺度特征融合&#xff1a;增强的特征提取能力 改进的跳跃连接&#xff1a;优化编码器与解…...

深入理解 Spring 的 MethodParameter 类

MethodParameter 是 Spring 框架中一个非常重要的类&#xff0c;它封装了方法参数&#xff08;或返回类型&#xff09;的元数据信息。这个类在 Spring MVC、AOP、数据绑定等多个模块中都有广泛应用。 核心功能 MethodParameter 主要提供以下功能&#xff1a; 获取参数类型信息…...

Docker部署HivisionIDPhotos1分钟生成标准尺寸证件照实操指南

文章目录 前言1. 安装Docker2. 本地部署HivisionIDPhotos3. 简单使用介绍4. 公网远程访问制作照片4.1 内网穿透工具安装4.2 创建远程连接公网地址 5. 配置固定公网地址 前言 相信大部分人办驾照、护照或者工作证时都得跑去照相馆&#xff0c;不仅费时还担心个人信息泄露。好消…...

python多线程+异步编程让你的程序运行更快

多线程简介 多线程是Python中实现并发编程的重要方式之一&#xff0c;它允许程序在同一时间内执行多个任务。在某些环境中使用多线程可以加快我们代码的执行速度&#xff0c;例如我们通过爬虫获得了一个图片的url数组&#xff0c;但是如果我们一个一个存储很明显会非常缓慢&…...

HDCP(五)

HDCP 2.2 测试用例设计详解 基于HDCP 2.2 CTS v1.1规范及协议核心机制&#xff0c;以下从正常流程与异常场景两大方向拆解测试用例设计要点&#xff0c;覆盖认证、密钥管理、拓扑验证等关键环节&#xff1a; 1. 正常流程测试 1.1 单设备认证 • 测试目标&#xff1a;验证源设…...

datagrip如何连接数据库

datagrip连接数据库的步骤 2025版本 想要链接数据库是需要一个jar包的&#xff0c;所以将上面进行删除之后&#xff0c;需要下载一个jar包 那么这个时候需要链接上传一个mysql链接的jar包 选择核心驱动类 上述操作完成之后&#xff0c;然后点击apply再点击ok即可 如下图说明my…...

Spring Boot 自动配置与启动原理全解析

下面分两部分系统讲解&#xff1a; 第一部分&#xff1a;Spring Boot 自动配置原理&#xff08;核心是自动装配&#xff09; 一、Spring Boot 的自动配置是干嘛的&#xff1f; 传统 Spring 开发时&#xff0c;你要写一堆 XML 或配置类&#xff0c;非常麻烦。Spring Boot 引入…...

python 基础:句子缩写

n int(input()) for _ in range(n):words input().split()result ""for word in words:result word[0].upper()print(result)知识点讲解 input()函数 用于从标准输入&#xff08;通常是键盘&#xff09;读取用户输入的内容。它返回的是字符串类型。例如在代码中…...

QML 中 Z 轴顺序(z 属性)

在 QML 中&#xff0c;z 属性用于控制元素的堆叠顺序&#xff08;Z 轴顺序&#xff09;&#xff0c;决定元素在视觉上的前后层次关系。 基本概念 默认行为&#xff1a; 所有元素的默认 z 值为 0 同层级元素后声明的会覆盖先声明的 父元素的 z 值会影响所有子元素 核心规则…...