Go语言02

1、指针(为了解决值传递,深度复制问题,节省内存)


	a := 10
	var p1 *int  	//指针
	p1 = &a //p1指向a的内存地址
	fmt.Println(p1)
	fmt.Println(*p1)

2、结构体

package main

import "fmt"

func main() {
var p1 Person
	p1.address = "东莞市"
	p1.name = "张飞"
	p1.age = 33
	p1.sex = "男"

fmt.Println(p1.address)

}
//结构体
type Person struct{
	name string
	age int
	sex string
	address string
}

	//指针实现浅拷贝
	var p2 * Person
	p2 = &p1
	fmt.Println(p2)
	fmt.Println(p2.address)

3、面向对象

package main

import "fmt"

func main() {

	f1 := Father{name: "张飞", age: 33}
	//方法调用
	f1.eat()
	fmt.Println(f1.name)
	//继承
	f2 := Son{Father: Father{name: "张飞", age: 33}, sex: "男"}
	fmt.Println(f2.name)
}

type Father struct {
	name string
	age  int
}
type Son struct {
	Father
	sex string
}

//方法
func (f Father) eat() {
	fmt.Println(f.name)

}

4、接口

package main

import "fmt"

func main() {
	m1 := Mouse{"小红"}
	fmt.Println(m1.name)
	test(m1)
}

//接口
type USB interface {
	start()
	end()
}

//实现类
type Mouse struct {
	name string
}
type FlashDisk struct {
	name string
}

func (m Mouse) start() {
	fmt.Println("鼠标开始")

}
func (m Mouse) end() {
	fmt.Println("鼠标结束")
}

//调式方法
func test(usb USB)  {
	usb.start()
}

5、接口嵌套

package main

import "fmt"

func main() {
var cat Cat = Cat{}
cat.test1()
}

type A interface {
	test1()
}

type B interface {
	test2()
}

type C interface {
	A
	B
	test3()
}
type Cat struct {
}

func (c Cat) test1() {
	fmt.Println("cat---------")
}

6、错误

	open, err := os.Open("test.txt")
	if err != nil{
		log.Fatal(err)
	}
	fmt.Println(open.Name(),"打开文件成功")

7、panic(恐慌)和recover(恢复恐慌)

	if(i == 5){
		//让程序中断 后面代码不执行(是否有异常)
		panic("程序恐慌,后面代码不执行了")
	}
	//捕获异常
	recover()

8、时间

	//当前时间
	t1 := time.Now()
	fmt.Println(t1)
	//格式化
	format := t1.Format("2020/07/10 15:04:05")
	fmt.Println(format)

9、IO操作

//读操作
package main

import (
	"fmt"
	"io"
	"os"
)

func main() {
	//C:\Users\64425\Desktop\新建文本文档 (15).txt
	finName,err := os.Open("C:\\Users\\64425\\Desktop\\新建文本文档 (15).txt")
	if err != nil{
		fmt.Println(err)
		return
	}
	defer finName.Close()
	//读取数据
	bs := make([]byte,4,4)
	for{
		n, err := finName.Read(bs)
		if n == 0 || err == io.EOF{
			fmt.Println(err)
		}
		fmt.Println(string(bs[:n]))
	}
}


//写操作
	finName, err := os.OpenFile("D:\\测试.txt", os.O_CREATE, os.ModePerm)
	if err != nil {
		fmt.Println(err)
		return
	}
	defer finName.Close()
	//写数据
	bs := []byte{65, 66, 67, 68, 69, 70} //A,B,C,D,E,F
	n, err := finName.Write(bs)
	fmt.Println(err)
	fmt.Println(string(bs[:n]))

10、IO操作(指定读取的位置)

	fineName, err := os.OpenFile("D:\\测试.txt", os.O_CREATE, os.ModePerm)
	if err != nil {
		fmt.Println(err)
		return
	}
	defer fineName.Close()
	//读写
	bs :=[]byte{0}
	fineName.Read(bs)
	fmt.Println(string(bs))
	//设置读写的位置
	fineName.Seek(4,io.SeekStart)
	fineName.Read(bs)
	fmt.Println(string(bs))
		//设置写的位置
	fineName.Seek(0,io.SeekEnd)
	fineName.WriteString("ABC")

11、bufio缓存读取文件

	fileName, err := os.OpenFile("D:\\测试.txt", os.O_CREATE, os.ModePerm)
	if err != nil {
		fmt.Println(err)
		return
	}
	defer fileName.Close()
	//创建缓冲对象(读)
	reader := bufio.NewReader(fileName)
	p := make([]byte, 1024)
	read, err := reader.Read(p)
	fmt.Println(string(p[:read]))

	//创建缓冲对象(写)
	file, err := os.OpenFile("D:\\测试.txt", os.O_CREATE, os.ModePerm)
	if err != nil {
		fmt.Println(err)
		return
	}
	writer := bufio.NewWriter(file)
	write, err := writer.WriteString("zhangfeiwoaini")
	writer.Flush()
	fmt.Println(write)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值