问题
使用这个方法实现会发现,最后一行的数据没有了。于是更改一下方案。
这个方案是根据教程撸的,但是出现了问题,先知道下面的解决方案。这个问题在后边探讨。现在没有实际的应用环境,也摸不到问题的点出现在哪
其实在学习的过程中,我们没有必要纠结一个点,咔咔的经验是,除非当日工作需要是不会对一个难点进行死磕的。慢慢的根据自己的知识提升会有更好的方案取而代之,或者问题的解决思路
func main() { file, e := os.OpenFile("D:/kaka.txt", os.O_RDONLY, 0666) if e != nil { fmt.Println("文件打开失败:err", e) return } else { fmt.Println("文件打开成功") } // 打开时立刻挂起关闭程序 defer func() { file.Close() fmt.Println("文件关闭成功") }() // 创建文件的读取器 reader := bufio.NewReader(file) // 死循环读取 for { // 以换行符为界,分批次读取数据,得到readString readString, e := reader.ReadString('\n') //line, _, e := reader.ReadLine() if e != nil { fmt.Println("文件读取失败;err", e) // 如果已到文件末尾,则直接结束 if e == io.EOF { time.Sleep(time.Second) break } } fmt.Print(readString) //fmt.Println(string(line)) } fmt.Println("读取结束") }
package main import "fmt" /** 首先我们需要明确一个概念那就是什么是面向对象 面向对象简称OOP,是一种计算机编程架构,使用面向对象编程可以实现代码的重用性,灵活性,扩展性。 面向对象符合人类看待事物的一般规律。使其代码更简洁,更容易维护,并且具有更强的重用性 在PHP中面向对象的三大特性:封装、继承、多态 当然在go中也是一样的 在PHP中我们有类 但是在go使用的是结构体 */ type Person struct { name string age int like []string } func main() { // 创建对象并通过对象的指针去访问对象的属性和方法 person := &Person{name: "咔咔", age: 24} // {咔咔 24 []} fmt.Println(*person) // 咔咔 fmt.Println(person.name) // 24 fmt.Println(person.age) // 咔咔博客地址:blog.fangkang.top person.eat() // 咔咔手赚网地址:fangkang.top person.play() } /** 无论方法的主语定义为指针还是值都是可以正常访问的 但是一般情况下我们都会把方法的主语定义为指针 因为传值的话是一个副本 指针是一个地址 这样在方法里边改变了属性的值 那么是通过这个地址去改变的 */ func (p *Person) eat() { fmt.Println("咔咔博客地址:blog.fangkang.top") } func (p *Person) play() { fmt.Println("咔咔手赚网地址:fangkang.top") }