第三章 面向对象编程 3.1类型系统

3.1.2 值语义与引用语义

值语义和引用语义的定义就是 复制后与之前的对象无关的对象叫做值语义

无法复制或者复制以后与原来对象存在关联的对象称为引用语义

C语言的数组在做函数参数传递的时候就是作为引用语义

但是作为结构体里面定义的时候就是值传递

但是go语言的里面数组都是值传递

go也存在四种引用语义的类型

1.切片数组

你可以把[]T看作为,其实就是一个指向数组的指针

  1. type slice struct{
  2. first *T
  3. len int
  4. cap int
  5. }

2.map

map本质上是一个字典指针 可以将map[K]V表示为

  1. type Map_K_V struct{
  2. //...
  3. }
  4. type map[K]V struct{
  5. impl *Map_K_V
  6. }

3. channel 执行体之间的通信设施

3.接口

  1. type interface struct{
  2. data *void
  3.     itab *Itab
  4. }

3.4 可见性

go的可见性是通过符号开头大小写来决定的 这就决定了 你无法用linux风格去编程呢

时间: 2024-10-09 18:57:37

第三章 面向对象编程 3.1类型系统的相关文章

第三章面向对象编程思想

""" 编码规范: 类名首字母应以大写字母开头 类的成员/属性: 成员属性 实例化对象的属性: self.name=name 可以被访问,也可以在类的外部被修改 私有属性 实例化对象的私有属性: self.__age=age 属性名前加两下划线 外部无法被访问, 也不能被修改,只能内部访问和修改 想要在外部访问只能自定义一个方法了 强制访问 私有属性: p._People__age 对象名._类名__私有属性 公共属性: 类的属性,也叫静态属性,他是在类的内部定义的 clas

进击的Python【第六章】:Python的高级应用(三)面向对象编程

Python的高级应用(三)面向对象编程 本章学习要点: 面向对象编程介绍 面向对象与面向过程编程的区别 为什么要用面向对象编程思想 面向对象的相关概念 一.面向对象编程介绍 面向对象程序设计(英语:Object-oriented programming,缩写:OOP)是一种程序设计范型,同时也是一种程序开发的方法.对象指的是类的实例. 已经被证实的是,面向对象程序设计推广了程序的灵活性和可维护性,并且在大型项目设计中广为应用. 此外,支持者声称面向对象程序设计要比以往的做法更加便于学习,因为它

第三章 网络编程

终于学到网络编程了! 先上图和程序: 这是今天写的TCP的实现 服务器和客户端分别在两台电脑 这是服务器图: 这是服务器程序: 1 #-*- coding:utf-8 -*- 2 from socket import * #导入socket所有属性 3 from time import ctime #导入ctime() 4 5 6 host = '' #HOST 变量为空,表示bind()函数可以绑定在所有有效的地址上. 7 port = 21000 #设置端口 8 bufsize = 1024

C++primer第十五章. 面向对象编程

面向对象编程基于三个基本概念:数据抽象.继承和动态绑定. 15.1. 面向对象编程:概述 面向对象编程的关键思想是多态性(polymorphism). 之所以称通过继承而相关联的类型为多态类型,是因为在许多情况下可以互换地使用派生类型或基类型的“许多形态”.正如我们将看到的,在 C++ 中,多态性仅用于通过继承而相关联的类型的引用或指针. 继承 派生类(derived class)能够继承基类(baseclass)定义的成员,派生类可以无须改变而使用那些与派生类型具体特性不相关的操作,派生类可以

第六章-面向对象编程

面向对象编程——Object Oriented Programming,简称OOP,是一种程序设计思想 面向过程的程序设计把计算机程序视为一系列的命令集合,即一组函数的顺序执行, 面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度 面向对象的程序设计把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递. 在Python中, 所有数据类型都可以视为对象, 同时也可以自定义对象. 自定

Delphi 高手突破(申 旻 著)-第 2 章 面向对象编程理论基础

面向对象是一种思维方式(理念),是一种方法论. 每个软件开发人员都会经常听到. 看到“ 面向对象” 这个词,程序员们也时常会把它挂在嘴上.那么, 什么是面向对象?什么是面向对象编程?是不是写几个类就算面向对象了?为什么要面向对象?因为别人都用,所以我也要用?显然, 并不是在程序中写了几个类就算面向对象编程了, 用面向对象编程也并不是为了赶时髦. “结构化编程” ( SP) 是一种编程方法, 是用计算机的视角来抽象问题的方法. 而“ 面向对象编程” ( OOP)也是一种编程方法, 它从更接近真实世

第五章 面向对象编程设计与开发——续3

5.9--封装 如何隐藏 在python中用双下划线开头的方式将属性隐藏起来(设置成私有的) #其实这仅仅是一种变形操作 #类中所有双下划线开头的名称如_x都会自动形成:_类名_x的形式: class A: _N=0#类的数据属性就应该是共享的,但是语法上是可以把类的数据属性设置成私有的如_N,会变形为_A_N def _init_(self): self._x=10#变形为self._A_X def _foo(self):#变形为_A_foo print('form A') def bar(s

第四章-面向对象编程

1 面向对象 一般地, 类是对象的类型模板, 实例是根据类创建的对象 但是在JavaScript中不区分类和实例, 而是通过原型(prototype)来实现面向对象编程 使用原型相当于继承 但是如果再给xiaoming绑定一个_proto_, 那原来绑定的东西就没有了 2 创建对象 对象访问属性的过程: 在当前对象查找, 没有找到就找它原型对象有没有, 再没有就找object的原型上查找, 如果都没查找到, 就返回undefined xiaoming -> xiaoming._proto_ ->

Python学习第三天(面向对象编程)01

面向对象编程(OOP) 程序 = 指令 + 数据 两种范型 面向过程: 以指令为核心:围绕"正在发生什么"进行编写 程序具有一系列线性步骤:主体思想是代码作用于数据 面向对象: 以数据为核心:围绕"将影响谁"进行编写 围绕数据及为数据严格定义的接口来组织程序,用数据控制对代码的访问 所有编程语言的最终目的都是提供一种抽象方法 在机器模型("解空间"或"方案空间")与实际解决的问题模型 ("问题空间")之间,