0%

基于“结构体”实现简易版学生管理系统 首先咱们在做项目之前,需要对项目进行分析。切记不可贪功冒进,从而导致无用功 分析 1. 学生类 2. 管理者类 3. 菜单栏 4. 基于管理类实现功能 1. 查看 2. 添加 3. 修改 4. 删除 5. 退出 结构图如下: 采用自顶向下的编程思维对以上分析进行复述,先整体、后细节(先全局、后详细)实现如上结构 定义全局的学生类 在定义学生类之前,我们需了解学生类包含的字段。这里我只定义了Id、姓名。其中id为唯一,姓名可重复。代码如下所示 1 2 3 4 type
阅读全文 »

结构体 Go语言中的基础数据类型可以表示一些事物的基本属性,但是当我们想表达一个事物的全部或部分属性时,这时候再用单一的基本数据类型明显就无法满足需求了,Go语言提供了一种自定义数据类型,可以封装多个基本数据类型,这种数据类型叫结构体,英文名称struct 。 也就是我们可以通过struct来定义自己的类型了。 Go语言中通过struct来实现面向对象的相关概念。 结构体的定义 1 2 3 4 5 6 // 使用type和struct关键字来定义结构体 type 类型名 struct { 字段名 字段类型 字段名 字段类型 … } 结构体定义需注意 *
阅读全文 »

在Go语言中没有类,也没有相关于类的继承、多态的实现。却有一种"新的概念"–结构体 Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性。 那么,接下来就让我们推开Go语言进阶部分内容的大门,Let’s Go 在学习结构体之前我们先预热一下,先了解Golang 的自定义类型 * 自定义类型: 当现有类型不足以满足需求的时候, 自己创建的类型 * 类型别名: 仅存在于编写过程, 提高代码可读性 ( byte 是 uint8 的别名; rune 是 uint16 的别名 ) 类型别名 类型别名 是 Go 1.9 版本添加的新功能。主要应用于代码升级、工程重构、迁移
阅读全文 »

defer触发时机 A “defer” statement invokes a function whose execution is deferred to the moment the surrounding function returns, either because the surrounding function executed a return statement, reached the end of its function body, or because the corresponding goroutine is panicking. Go官方文档中对defer的
阅读全文 »

匿名函数 什么是匿名函数 没有名字的函数,由于函数中不可定义有名字的函数,所有出现匿名函数,匿名函数常使用于函数中定义函数 匿名函数的定义 1 2 3 func(参数) (返回值){ 函数体 } 其中参数、返回值视情况酌情加入 简单的示例 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 package main import "fmt" func f1(x, y int) int { return x + y } var f2 = func(x, y int) int { return x * y } func main(
阅读全文 »

本节将探讨golang 的函数部分 * 函数的结构分析函数的定义 * 函数的层次 * 函数的作用域 * 匿名函数 * 立即执行函数 * 闭包 函数存在的意义 * 函数是一段代码的封装 * 使用函数可以使结构更加清晰与简洁 代码重用 函数存在的一个非常明显的作用和意义就是代码重用。没有代码重用,编程人员会被活活累死,费尽千辛万苦写出来的代码只能使用一次,有类似的功能需要完成时,不得不重头开始写起。 有助于我们思考 在函数设计上有一个原则,叫做单一职能原则,意思是说,一个函数只完成一个特定的功能。我以冒泡排序来向你解释什么叫做到单一职能原则,并向你展示函数是如何帮助我
阅读全文 »

Array(数组)的介绍 数组是同一种数据类型元素的集合。 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化。 基本语法: 1 var 数组变量名 [数组数量]数组类型 //数组的长度必须是常量,并且长度是数组类型的一部分。 // 一旦定义,长度不能变。 [1]int和[2]int是不同的两种类型。 数组可以通过下标进行访问,下标是从0开始,最后一个元素下标是:len-1,访问越界(下标在合法范围之外),则触发访问越界,会panic。 例如: 1 2 3 4 5 var a [1]int var b [2]int a = b // ca
阅读全文 »

Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现map map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。 定义Map 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 // 初始化定义 map[KeyType]ValueType // KeyType:表示键的类型。map可以嵌套map,可以是key 也是是value // ValueType:表示键对应的值的类型。 map类型的变量默认初始值为nil,需要使用make()函数来分配内存。语法为: make(ma
阅读全文 »

无论多么复杂的程序,多么复杂的逻辑。基本是由以下三种构成(当然除非其原本业务逻辑客观复杂) 大道至简、速归同途,找到这种感觉。come on~ 条件分支语句 if 条件分支语句 Golang条件语句是通过一条或多条语句的执行结果(True或者False)来决定是否执行的代码块。 Golang程序语言指定任何非0和非空(null)值为true,0 或者 null为false。 Golang 编程中 if 语句用于控制程序的执行,基本形式为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 func main()
阅读全文 »

Go语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函数、map、通道(channel)等。Go 语言的基本类型和其他语言大同小异。 基本数据类型 整形 整型分为以下两个大类: 按长度分为:int8、int16、int32、int64 无符号整型:uint8、uint16、uint32、uint64 * uint8就是我们熟知的byte型 * int16对应C语言中的short型, * int64对应C语言中的long型。 取值范围如下所示: 类型取值范围int取值范围为您操作系统的位数字,如果是64位操作系统。为int64int8
阅读全文 »