2 反射 反射是指在运行时动态的访问和修改任意类型对象的结构和成员,在 go 语言中提供 reflect 包提供反射的功能,每一个变量都有两个属性:类型(Type)和值(Value) 1.相关功能 reflect 2.反射技术应用 3.相关功能底层技术使用了反射技术 2.1 json json 其实就是格式化的字符串。 我们在做文件操作的时候呢,不…
接口与反射 go 中不需要声明 接口 与相关赋值接口和结构体的关系 只要调用了对应的接口里面所有的方法,我们就认为实现了接口 面向对象: 封装:将属性隐藏(结构体属性),提供相关接口供调用者访问和修改,调用的人不用关心我内部实现。 比如User{} 结构体里面,我们在设置 age 的时候,不可能说超过 200 岁,所以这个时候我们就要给他加一个 S…
[TOC] 文件与 IO 操作 基本操作(不带缓冲 IO):读、写 标准输入、输出、错误 带缓冲的 IO 文件,对我们并不陌生,文件是数据源(保存数据的地方)的一种,比如大家经常使用的word文档,txt文件,excel文件...都是文件。文件最主要的作用就是保存数据,它既可以保存一张图片,也可以保持视频,声音... 程序的路径: 文件类型: 我们…
[TOC] 4 自定义类型&结构体定义 结构体默认是值类型 结构体是自定义类型的一种,在学结构体之前我们需要了解一下自定义类型 面向对象三大思想: 封装:在 go 里面实现封装就是用的结构体,将一堆属性不同的数据放到一起 继承:在其他代码段中可继承父代码的内容 多态:go 中没有比较好的多态示例 4.1 自定义类型 在 GO 里面是支持自定…
实现自动创建容器及外部执行容器命令工具 1 工具设计概念 需求: 由于公司专门为其他业务部门提供了 paas 平台操作,但是有的业务部门的同事不太习惯使用 web 页面,所以我们不得不为他们提供后台的 kubectl 终端对他们的业务 NS 进行管理。 而领导的解决方式是通过在 K8S 上通过 UA 生成单独的用户来实现对业务的 NS 进行管理,并…
错误+延迟执行+panic&recover+单步调试 1 error 接口 Go 语言通过 error 接口实现错误处理的标准模式,通过使用函数返回值列表中的最后一个值返回错误信息,将错误的处理交由程序员主动进行处理 在程序中运行时错误错误一般分为两种: 可恢复的错误(重试/或忽略) 不可恢复的错误(程序退出) 范例代码: package …
函数类型+匿名函数+闭包 函数也可以赋值给变量,存储在数组、切片、映射中,也可作为参数传递给函数或作为函数返回值进行返回 通过函数类型,我们也可以定义一些集合类型,比如切片的映射的 函数类型的意义: 函数类型可以把函数作为参数传递到其他的函数中 1 函数类型 函数类型:由参数的数量和他的类型,还有返回值的数量和类型组成 package main i…
递归-阶乘&阶乘算法&汉诺塔 1 递归 递归是指函数直接或间接调用自己,递归常用于解决分治问题,将大问题分解为相同的小问题进行解决,需要关注终止条件 我们每做一个递归的时候一定要判断清楚递归的结束条件是什么 阶乘 package main import "fmt" func fact(n int) int { /…
[TOC] 1 函数定义&参数 函数用于对代码块的逻辑封装,提供代码复用的最基本方式,函数是对代码的一个封装,和复用 1.1 定义函数 函数包含函数名、形参参列表、函数体和返回值列表,使用 func 进形参声明,函数无参数或返回值时则形参列表和返回值列表省略。 函数可以理解为就是一种类型 func 函数名称(形参) 返回值 { 函数体 } …
本文主要对 Informer 中的 Reflector 组件进行分析说明。 前面我们说了 Informer 通过对 APIServer 的资源对象执行 List 和 Watch 操作,把获取到的数据存储在本地的缓存中,其中实现这个的核心功能就是 Reflector,我们可以称其为反射器,从名字我们可以看出来它的主要功能就是反射,就是将 Etcd 里…