十八. GOTO语句
go语言有goto语句。Go语言的goto语句可以无条件地转移到过程中指定的行;goto语句通常与条件语句配合使用,可用来实现条件转移,跳出循环体等功能。
func main() {
for i := 0; i < 10; i++ {
for j := 0; j < 10; j++ {
if j == 2 {
// 设置退出标签
goto breakTag
}
}
}
return
breakTag:
fmt.Println("结束循环")
}
结构体的嵌套
在Go语言中,结构体可以嵌套在其他结构体中,从而形成更复杂的数据结构。嵌套结构体的定义方式与普通结构体的定义方式相同,只是在字段的类型中指定另一个结构体类型。
十九.接口
1 接口的概念
go语言将一些公共的处理逻辑模板集中在接口中
2 接口的案例
type Student struct{
ownName string
ownAge int
ownAddress string
}
type People interface {
age()
}
func (stu Student) age() {
fmt.Println("stu.ownName")
}
func main() {
//var stu1 Student
//stu1 = Student{}
//stu1.ownName = "jack"
//stu1.ownAge = 23
//stu1.ownAddress = "西安"
//stu1.age()
var peo People
peo = new(Student)
peo.age()
}
3 利用接口修改结构体中的属性
- 类似于java中的set,get方法
type Student struct {
name string
}
type people interface {
getName()
setName(name string)
}
func (stu Student) getName() {
fmt.Println(stu.name)
}
func (stu *Student) setName(name string) {
stu.name = name
}
func main() {
var stu Student = Student{"jack"}
stu.getName()
stu.setName("rise")
stu.getName()
}
二十.方法
1方法的使用细节
方法名小写,只能在本包使用,方法名大写,可以在本包和其他包使用
2 函数和方法的区别
方法一般指的是与结构体绑定的方法,函数指的就是普通的函数。
二十一.文件的操作
1 流
- 输入流
数据从数据源(文件)到程序(内存)的路径 - 输出流
数据从程序(内存)到数据源(文件)的路径
2 打开关闭文件
func main(){
file, err := os.Open("F:\\a.txt")
if err != nil{
fmt.Println("打开文件出错")
}else {
fmt.Printf("file=%v", file)
}
//关闭文件
err1 :=file.Close()
if err != nil{
fmt.Println("关闭文件出错",err1)
}
}
3.写入文件
func main(){
filename := "f://a.txt"
file, err := os.OpenFile(filename, os.O_WRONLY | os.O_CREATE, 0666 )
if err != nil{
fmt.Println("打开文件出错")
return
}
defer file.Close()
str := "hello, my daday"
writer :=bufio.NewWriter(file)
writer.WriteString(str)
//write是写入缓存中的,flush是写入到文件中
writer.Flush()
fmt.Println("写入成功")
}
4.判断文件是否存在
func judgaFile(filePath string){
_,err := os.Stat(filePath)
if err == nil{
fmt.Println("文件存在")
return
}
if os.IsNotExist(err) {
fmt.Println("文件不存在")
return
}
fmt.Println("不确定文件存在不存在")
}
func main(){
pathName := "f://a1.txt"
judgaFile(pathName)
}