优秀的编程知识分享平台

网站首页 > 技术文章 正文

仓颉编程语言基础-数据类型—结构类型

nanyue 2025-08-06 22:18:11 技术文章 2 ℃

结构类型(Struct) 是一种自定义的复合数据类型,用于将多个不同类型的值组合成一个逻辑单元。

仓颉的结构类型是其数据抽象的核心工具,通过值语义、深拷贝、内存安全及灵活的嵌套/泛型支持,为开发高性能、高可靠的全场景应用(如鸿蒙原生应用、分布式中间件)提供底层保障。

结构类型的定义与基本语法

结构类型的定义以关键字 struct 开头,后跟 struct 的名字,花括号中的是struct 定义体。struct 定义体中可以定义一系列的成员变量、成员属性(参见属性)、静态初始化器、构造函数和成员函数。struct 只能定义在源文件的顶层作用域。

// 基础定义
struct 用户 {
    字符串 姓名
    整型 年龄
    布尔 是否激活
}

// 含构造函数的定义
struct Point {
    var x: Int
    var y: Int
    init(x: Int, y: Int) { // 显式构造函数
        this.x = x
        this.y = y
    }
}
  • 成员变量支持 var(可变)与 let(不可变)声明,默认私有(需通过 public 显式公开)。
  • 构造函数必须显式定义,用于初始化字段值

静态初始化器

  • 用 static init() 定义,用于初始化静态成员变量。
  • 每个 struct 最多一个静态初始化器,且必须初始化所有未初始化的静态变量。

构造函数

  • 普通构造函数:以 init 开头,需初始化所有未初始化的实例成员变量。支持重载(参数不同),但禁止重复定义。
  • 主构造函数:与类型同名,参数中可用 let/var 定义成员变量(简化代码)。

成员函数

  • 实例成员函数:通过实例调用,可使用 this 访问成员变量。
  • 静态成员函数:用 static 修饰,通过类型名调用,不可访问实例成员。

访问控制

支持 4 种修饰符(缺省为 internal):

  • private:仅 struct 内部可见。
  • internal:当前包及子包可见(默认)。
  • protected:当前模块可见。
  • public:全局可见。
最近发表
标签列表