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

Go 面向对象,多态,基本数据类型

程序功能解读

第一行为可执行程序的包名,所有的Go源文件头部必须有一个包生命语句,Go通过包名来管理命名空间。
第三行import是引用外部包的说明
func关键字声明定义一个函数,如果是main则代表是Go程序入口函数

Go源码特征解读

源程序以.go结尾
源程序默认为UF8编码
标识符区分大小写
语句结尾的分号可以省略
包内方法调用使用.调用
main函数所在的包名必须是main

Go词法单元

标识符开头必须是_或者字母
内置数据标识符也就是基本数据类型其中包括:
整形 byte int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 uintptr (u开头的是无符号,也就是正整数)
浮点型 float32 float64
复数型 complex64 complex128
字符string (字节为单位)
字符串 rune (字符为单位)
接口类型 error
布尔型 bool
常量值标识符
true false // 布尔值常量
iota // 连续枚举类型自增值
nil // 指针/引用型的变量默认值

Go源程序基本构成

  • 关键字引导程序的基本结构
  • 内置类型标识符辅助声明变量和常量
  • 字面量辅助变量和常量的初始化
  • 分隔符帮助Go语言识别
  • 操作符和变量关键字一起构成丰富的语法单元

变量

var varName dataType [= value]

  • 关键字var用于变量声明
  • varName是变量名标识符
  • dataType是基本数据类型
  • value是变量的初始值,可以是值也可以是其他变量名,还可以是一个表达式,如果不指定初始值泽默认赋值该类型的零值
  • 声明变量后立刻分配空间

varName := value

  • 短类型声明只能出现在函数内
  • 自动进行数据类型判断

常量

常量分为布尔型、字符串型和数值类型,常量存储在程序的只读段里。
预声明标识符iota用在常量声明中初始值为0,一组多个常量同时声明则会自增,变成枚举。

复合数据类型

指针 * pointerType // 指针类型使用* 然后紧跟其指向的类型名
数组 [n] elementType // 数组类型使用[n],n代表数组长度,后边跟的是元素类型
切片 [] elementType // 和数组差不多只不过不需要指定长度
字典(map) map[keyType]valueType // map类型使用map[键类型]值类型表示
chan valueType // 通道chan和后边的通道元素类型

面向对象

工程结构
在这里插入图片描述

新建一个oop.go

package _oop // Package _oop 引用名称import ("fmt""strconv"
)// GIRL 常量
const (// GIRL 自增GIRL Gender = iotaFIRSTSECONDTHIRD
)type Gender uint8 // 无符号的8位整数类型// User 结构体
type User struct {Name   stringAge    uint8Gender Gender
}/**
方法参数中带*意思是传递的是结构体的指针,如果修改会影响外部的值,如果不带星则是传入了一个复制出来的值
*/// AddAge 方法
func (u *User) AddAge() {u.Age++
}// Run 方法
func (*User) Run() {fmt.Println("user run")
}// Sleep 方法
func (*User) Sleep() {fmt.Println("user sleep")
}func UserCase() {u := new(User) // &为取地址符号u.Run()u.Sleep()fmt.Println(GIRL)fmt.Println(THIRD)fmt.Println("修改前的Age" + strconv.FormatInt(int64(u.Age), 10)) // strconv.FormatInt(int64(u.Age), 10) 这里是将十进制的数字转为了string类型u.AddAge()fmt.Println("修改前的Age" + strconv.FormatInt(int64(u.Age), 10))
}

再写一个main主程序掉用

package mainimport _study "study/oop" // 引入另一个go文件 _study为package名称 后边是他的存在路径以根目录为开始func main() {_study.UserCase()
}

多态

工程结构在这里插入图片描述
编写一个新的go文件,在go中只要是实现了接口的方法就算是实现

package polymorphismimport ("fmt"
)type Person interface {Run()Sleep()
}// Teacher 结构体
type Teacher struct {
}// Student 结构体
type Student struct {
}/**
方法参数中带*意思是传递的是结构体的指针,如果修改会影响外部的值,如果不带星则是传入了一个复制出来的值
*/// Run Teacher方法
func (*Teacher) Run() {fmt.Println("Teacher run")
}// Sleep Teacher方法
func (*Teacher) Sleep() {fmt.Println("Teacher sleep")
}// Run Student方法
func (*Student) Run() {fmt.Println("Student run")
}// Sleep Student方法
func (*Student) Sleep() {fmt.Println("Student sleep")
}func Process(person Person) {person.Run()person.Sleep()
}

相关文章:

Go 面向对象,多态,基本数据类型

程序功能解读 第一行为可执行程序的包名,所有的Go源文件头部必须有一个包生命语句,Go通过包名来管理命名空间。 第三行import是引用外部包的说明 func关键字声明定义一个函数,如果是main则代表是Go程序入口函数 Go源码特征解读 源程序以.g…...

使用 Python修改JSON 文件中对应键值

文章目录 前言代码分析 前言 在日常的数据处理工作中,经常需要对 JSON 文件进行读取和修改。在 Python 中,处理 JSON 文件非常方便。本文将通过一个简单的示例程序来演示如何读取和修改 JSON 文件。 代码分析 首先,需要导入 json 和 os 模块…...

【Rust日报】2023-11-08 RustyVault -- 基于 rust 的现代秘密管理系统

RustyVault -- 基于 rust 的现代秘密管理系统 RustyVault 是一个用 Rust 编写的现代秘密管理系统。RustyVault 提供多种功能,支持多种场景,包括安全存储、云身份管理、秘密管理、Kubernetes 集成、PKI 基础设施、密码计算、传统密钥管理等。RustyVault 可…...

07【保姆级】-GO语言的程序流程控制【if switch for while 】

之前我学过C、Java、Python语言时总结的经验: 先建立整体框架,然后再去抠细节。先Know how,然后know why。先做出来,然后再去一点点研究,才会事半功倍。适当的囫囵吞枣。因为死抠某个知识点很浪费时间的。对于GO语言&a…...

求2个字符串的最短编辑距离 java 实现

EditStepInfo.java: import lombok.Getter; import lombok.Setter;import java.io.Serializable; import java.util.List;Getter Setter public class EditStepInfo implements Serializable {private String str1;private String str2;// str1和 str2 的最短编辑路…...

单例模式 rust和java的实现

文章目录 单例模式介绍应用实例:优点使用场景 架构图JAVA 实现单例模式的几种实现方式 rust实现 rust代码仓库 单例模式 单例模式(Singleton Pattern)是最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建…...

tqdm学习

from tqdm import tqdmepochs 10 epoch_bar tqdm(range(epochs)) count 0 for _ in epoch_bar:count count1print("count {}".format(count))print(_)每次就是一个epoch...

Zigbee—网络层地址分配机制

🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:孤雏 0:21━━━━━━️💟──────── 4:14 🔄 ◀️ ⏸ ▶️ ☰ 💗关注…...

[Matlab]基于LSTM+NSGA2的风光火力发电策略优化

最近比较忙,好久没分享案例啦,今天简单分享一个滚动时域的多目标优化 一 模型介绍 1 风电 2 光伏 3 火电 4 储能 5 用电需求 等五个对象。 其中风电和光伏还有用电需求,用历史数据LSTM网络,训练一个预测模型;火电根据策…...

智安网络|探索人机交互的未来:自然语言处理的前沿技术

自然语言处理是人工智能领域中研究人类语言和计算机之间交互的一门学科。它涉及了语言的理解、生成、翻译、分类和摘要等多个方面。随着人们对自然语言处理的重视和需求不断增长,成为了热门的研究方向。 首先,我们需要了解自然语言处理的基本概念。自然…...

Could not load library libcudnn_cnn_train.so.8, 解决类似问题的思路与方法

完整报错 Could not load library libcudnn_cnn_train.so.8. Error: /home/ai/anaconda3/envs/ai/bin/../lib/libcudnn_ops_train.so.8: undefined symbol: _ZN5cudnn3ops26JoinInternalPriorityStreamEP12cudnnContexti, version libcudnn_ops_infer.so.8 错误原因 该错误其…...

孙子兵法_00000

第一篇:始计篇 孙子曰:兵者,国之大事,死生之地,存亡之道,不可不察也。 故经之以五事,校之以计,而索其情:一曰道,二曰天,三曰地,四曰将…...

代挂单页网址发布页+加盟代理+APP下载页源码

代挂单页加盟代理网址发布页app下载页HTML单页版本,自行修改源码内文字。自行修改联系方式、登录地址!上传即可使用。源码我已全部打包好,直接上传本站提供的源码,无后台,直接访问即可! 源码下载&#xff…...

计算机视觉驾驶行为识别应用简述

一、什么是计算机视觉识别? 计算机视觉识别是一种基于图像处理和机器学习的人工智能应用技术,可以用于多个场景。常见应用场景包括人脸识别、场景识别、OCR识别以及商品识别等。今天以咱们国产系统豌豆云为例,为大家梳理一下在车辆驾驶行为中…...

asp.net core configuration配置读取

asp.net core 默认注入了configuration配置服务,configuration可以从命令行、环境变量、配置文件读取配置。 这边主要演示从appsettings.json文件读取配置 1.读取单节点配置 { "name":"pxp" }//在控制器注入Iconfigurationprivate IConfigurat…...

windows上 Nexus 批量上传 maven依赖npm依赖

windows上 Nexus 批量上传 maven依赖/npm依赖 前言:windows系统上要有git环境,不然sh文件执行不了 1.批量上传maven依赖 设置脚本,把脚本放在依赖包的根目录执行,脚本名为upload.sh #!/bin/bash# 定义变量 while getopts &quo…...

已解决:Python Error: IndentationError: expected an indented block 问题

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页: 🐅🐾猫头虎的博客🎐《面试题大全专栏》 🦕 文章图文并茂&#x1f996…...

汽车标定技术(六)--基于模型开发如何生成完整的A2L文件(2)

目录 1. 自定义ASAP2文件 2. asap2userlib.tlc需要修改的部分 3. 标定量观测量地址替换 3.1 由elf文件替换 3.2 由map文件替换 3.3 正则表达式(含asap2post.m修改方法) 4.小结 书接上文汽车标定技术(五)--基于模型开发如何生成完整的A2L文件(1)-C…...

普华永道于进博会发布全新升级的DSAI投资管理数字化平台

上海,2023年11月9日——今日,在第六届中国国际进口博览会上,全球领先的专业服务机构普华永道推出了全新升级的创新投资管理产品:DSAI投资管理数字化平台。升级后的DSAI投资管理数字化平台具有收益分配自动计算和智能BI看板功能。作…...

ssm+vue的高校学生课堂考勤系统设计与实现(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频: ssmvue的高校学生课堂考勤系统设计与实现(有报告)。Javaee项目,ssm vue前后端分离项目。 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

docker详细操作--未完待续

docker介绍 docker官网: Docker&#xff1a;加速容器应用程序开发 harbor官网&#xff1a;Harbor - Harbor 中文 使用docker加速器: Docker镜像极速下载服务 - 毫秒镜像 是什么 Docker 是一种开源的容器化平台&#xff0c;用于将应用程序及其依赖项&#xff08;如库、运行时环…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

基于数字孪生的水厂可视化平台建设:架构与实践

分享大纲&#xff1a; 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年&#xff0c;数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段&#xff0c;基于数字孪生的水厂可视化平台的…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join

纯 Java 项目&#xff08;非 SpringBoot&#xff09;集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...