随笔分类 - go语言
摘要:统计不同类型的字符个数 统计英文、数字、空格和其它字符数量 说明:统计一个文件中含有的英文、数字、空格及其它字符数量。 package mainimport ( "fmt" "io" "bufio" "os") //定义一个结构体,用于保存统计结果type CharCount struct { Ch
阅读全文
摘要:判断文件或目录存在 基本应用实例-方式二 编程一个程序,将一个文件的内容,写入到另外一个文件。注:这两个文件已经存在了。 说明:1)使用ioutil.ReadFile / ioutil.WriteFile 完成写文件的任务 package mainimport ( "fmt" "io/ioutil"
阅读全文
摘要:创建文件并写入内容 写文件操作应用实例: 基本介绍: func OpenFile(name string, flag int, perm FileMode) (file *File, err error) 说明:os.OpenFile 是一个更一般性的文件打开函数,它会使用指定的选项(如O_RDON
阅读全文
摘要:文件,对我们并不陌生,文件是数据源(保存数据的地方)的一种,比如大家经常使用的Word文档,txt文件,excel文件...都是文件。文件最主要的作用就是保存数据,它既可以保存一张图片,也可以保存视频,声音... 文件在程序中是以流的形式来操作的。 流:数据在数据源(文件)和程序(内存)之间经历的路
阅读全文
摘要:多态及体现: 基本介绍: 变量(实例)具有多种形态。面向对象的第三大特征,在Go语言,多态特征是通过接口实现的。可以按照统一的接口来调用不同的实现。这时接口变量就呈现不同的形态。 快速入门: 在前面的Usb接口案例, Usb usb,既可以接收手机变量,又可以接收相机变量,就体现了Usb 接口多态特
阅读全文
摘要:接口编程的经典案例: 接口最佳实践: 实现对Hero 结构体切片的排序:sort.Sort(data Interface) 案例演示: package mainimport ( "fmt" "sort" "math/rand") //1.声明Hero结构体type Hero struct { Nam
阅读全文
摘要:Go接口注意事项和细节说明: 注意事项和细节: 1)接口本身不能创建实例,但是可以指向一个实现了该接口的自定义类型的变量(实例) type AInterface interface { Say()} type Stu struct { Name string} func (stu Stu) Say(
阅读全文
摘要:接口(interface) 按顺序,我们应该讲解多态,但是在讲解多态前,我们需要讲解接口(interface) ,因为在Golang中 多态特性主要是通过接口来体现的。 接口快速入门: 这样的设计需求在Golang编程中也是会大量存在的,我曾经说过,一个程序就是一个世界,在现实世界存在的情况,在程序
阅读全文
摘要:多重继承介绍: 结构体的匿名字段是基本数据类型,如何访问,下面代码输出什么? 匿名字段练习: type Monster struct { Name string Age int} type A struct { Monster int //匿名字段是基本数据类型 n int} func main()
阅读全文
摘要:面向对象编程三大特性--继承 为什么需要继承: 一个小问题,看个学生考试系统的程序extends01.go,提出代码复用的问题: 代码: package mainimport ( "fmt") //编写一个学生考试系统 //小学生type Pupil struct { Name string Age
阅读全文
摘要:封装介绍: 封装(encapsulation) 就是把抽象出的字段和对字段的操作封装在一起,数据被保护在内部,程序的其它包只有通过被授权的操作(方法),才能对字段进行操作。 封装的理解和好处: 1)隐藏实现细节 2)提可以对数据进行验证,保证安全合理 type Person struct { Age
阅读全文
摘要:如何理解抽象: 我们在前面去定义一个结构体的时候,实际上就是把一类事物的共有的属性(字段)和行为(方法)提取出来,形成一个物理模型(模板)。这种研究问题的方法称为抽象。 案例演示: type Account struct { AccountNo string Pwd string Balance f
阅读全文
摘要:说明: Golang的结构体没有构造函数,通常可以使用工厂模式来解决这个问题。 看一个需求: 一个结构体的声明是这样的: package modeltype Student struct { Name string...} 因为这里的Student 的首字母S是大写的,如果我们想在其它包创建Stud
阅读全文
摘要:步骤: 1)声明(定义)结构体,确定结构体名2)编写结构体的字段3)编写结构体的方法 学生案例: 1)编写一个Student结构体,包含name、gender、age、id、score字段,分别为string、string、int、int、float64类型。 2)结构体中声明一个say方法,返回s
阅读全文
摘要:方法的调用和传参机制原理:(重要!) 说明:方法的调用和传参机制和函数基本一样,不一样的地方是方法调用时,会将调用方法的变量,当做实参也传递给方法。下面我们举例说明: 案例1:画出前面getSum 方法的执行过程+说明 说明: 1)在通过一个变量去调用方法时,其调用机制和函数一样。2)不一样的地方,
阅读全文
摘要:基本介绍: 在某些情况下,我们要需要声明(定义)方法。比如Person 结构体:除了有一些字段外(年龄,姓名...),Person结构体还有一些行为比如:可以说话、跑步...,通过学习,还可以做算术题。这时就要用方法才能完成。 Golang中的方法是作用在指定的数据类型上的(即:和指定的数据类型绑定
阅读全文
摘要:创建结构体变量和访问结构体字段 1)方式1-直接声明 案例演示:var person Person 2)方式2-{} 案例演示:var person Person = Person{} func main() { p2 := Person{} p2.Name = "tom" p2.Age = 18
阅读全文
摘要:Golang语言面向对象编程说明: 1)Golang也支持面向对象编程(OOP),但是和传统的面向对象编程有区别,并不是纯粹的面向对象语言。所以我们说Golang支持面向对象编程特性是比较准确的。 2)Golang没有类(class),Go语言的结构体(struct)和其它编程语言的类(class)
阅读全文
摘要:map切片: 切片的数据类型如果是map,则我们称为 slice of map, map切片,这样使用则map个数就可以动态变化了。 案例演示:要求:会用一个map来记录monster的信息 name 和 age,也就是说一个monster 对应一个map,并且妖怪的个数可以动态的增加=>map切片
阅读全文
摘要:map增加和更新: map["key"] = value //如果key还没有,就是增加,如果key存在就是修改 案例演示: func main() { cities := make(map[string]string) cities["no1"] = "北京" cities["no2"] = "天
阅读全文