commit 1adca2ffe6ac6cfb73992e3cd3fe6f3143f0ab3d Author: cuipy <1852331513@qq.com> Date: Thu Aug 1 23:40:06 2024 +0800 'init' diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f3accdd --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.idea/ +test \ No newline at end of file diff --git a/demo/dem.go b/demo/dem.go new file mode 100644 index 0000000..ae98b51 --- /dev/null +++ b/demo/dem.go @@ -0,0 +1,44 @@ +package main //同文件包的声明 需要保持一直 +import ( + "fmt" + "strconv" + "strings" +) + +func main() { + var s string = "golang你好" + fmt.Println(len(s)) + + for i, value := range s { + fmt.Printf("%d", "%c", i, value) + } + r := []rune(s) + for i := 0; i < len(r); i++ { + fmt.Println(r[i]) + } + num1, _ := strconv.Atoi("666") + fmt.Println(num1) + //整数转成字符串 + st1 := strconv.Itoa(88) + fmt.Println(st1) + //统计字符串中有几个相同的 + count := strings.Count("golanggolang", "golang") + fmt.Println(count) + //不区分大小写 + flag := strings.EqualFold("go", "GO") + fmt.Println(flag) + //区分大小写 + fmt.Println("hello" == "HELLO") + //字符串替换 + ss := strings.Replace("gogogo", "go", "golang", -1) + fmt.Println(ss) + //按照字符串,为分割符标识,将字符串进行切割分成字符数组 + a := strings.Split("java-go", "-") + fmt.Println(a) + //大小写切换 + fmt.Println(strings.ToLower("GO")) + fmt.Println(strings.ToUpper("go")) + //去除空格! + fmt.Println(strings.TrimSpace(" go ")) + +} diff --git a/demo/demo01.go b/demo/demo01.go new file mode 100644 index 0000000..725d000 --- /dev/null +++ b/demo/demo01.go @@ -0,0 +1,26 @@ +package main + +import ( + "fmt" +) + +func main() { + var a int = 100 + var b int = 30 + c := sum(a, b) + fmt.Println(c) + test(32, 54) + +} + +// 函数的首字母大写可以被其他包的文件访问(类似于public) +// 函数的首字母小写只能被本包访问(类似于private) +func sum(a int, b int) int { + return a + b +} +func test(args ...int) { + for i := 0; i < len(args); i++ { + fmt.Println(args[i]) + + } +} diff --git a/demo/demo3.go b/demo/demo3.go new file mode 100644 index 0000000..93f0ec4 --- /dev/null +++ b/demo/demo3.go @@ -0,0 +1,37 @@ +package main + +import "fmt" + +type Animal struct { + Age int + Weight float32 +} + +func (an *Animal) shou() { + fmt.Println("打击") +} +func (an *Animal) showinfo() { + fmt.Println("动物的体重", an.Age, an.Weight) + +} + +type Cat struct { + Animal + Age int +} + +func (c *Cat) showInfo() { + fmt.Println("动物体重", c.Age, c.Weight) + +} + +// 对cat绑定特有的方法 +func (c *Cat) rs() { + fmt.Println("我是小猫") +} +func main() { + cat := &Cat{} + cat.Weight = 10 + cat.Animal.Age = 30 + fmt.Println(cat) +} diff --git a/demo/p2.go b/demo/p2.go new file mode 100644 index 0000000..31cfe2f --- /dev/null +++ b/demo/p2.go @@ -0,0 +1,26 @@ +package main + +import "fmt" + +type person struct { + Name string + age int +} + +// 定义工厂的函数 +func NewPerson(name string) *person { + return &person{ + Name: name, + } + +} +func (p *person) SetAge(age int) { + if age >= 0 && age <= 150 { + p.age = age + } else { + fmt.Println("超出") + } +} +func (p *person) GetAge() int { + return p.age +} diff --git a/demo/te.go b/demo/te.go new file mode 100644 index 0000000..7905807 --- /dev/null +++ b/demo/te.go @@ -0,0 +1,5 @@ +package main + +func main() { + +} diff --git a/demo/test.go b/demo/test.go new file mode 100644 index 0000000..6e3300b --- /dev/null +++ b/demo/test.go @@ -0,0 +1,52 @@ +package main + +import "fmt" + +// 接口定义设计规范 +type SayHello interface { + SayHello() +} +type American struct { + Name string +} + +func (person American) SayHello() { + fmt.Println("你好") +} + +type chinese struct { + Name string +} + +func (person chinese) SayHello() { + fmt.Println("chinese") +} +func (person chinese) tiaowu() { + fmt.Println("跳舞") +} + +// 定义函数:接收接口的实例 +func greet(s SayHello) { + s.SayHello() + + //断言控制语句的要求 判断这是chinese + ch, flag := s.(chinese) + if flag == true { + + ch.tiaowu() + } else { + fmt.Println("no") + } +} + +func main() { + var a [3]SayHello + a[0] = chinese{"1"} + a[1] = American{"hel"} + a[0].SayHello() + + c := chinese{} + c.tiaowu() + c.SayHello() + +} diff --git a/demo/test01.go b/demo/test01.go new file mode 100644 index 0000000..24960ff --- /dev/null +++ b/demo/test01.go @@ -0,0 +1,26 @@ +package main + +import "fmt" + +type a interface { +} +type b interface { +} + +type Stu struct { +} + +func (s Stu) a() { + fmt.Println("aa") + +} +func (s Stu) b() { + fmt.Println("bbb") +} +func main() { + var s Stu + var a = s + var b = s + a.b() + b.a() +} diff --git a/main.go b/main.go new file mode 100644 index 0000000..70422a1 --- /dev/null +++ b/main.go @@ -0,0 +1,26 @@ +package main + +import "fmt" + +func GetSum() func(int) int { + var sum int = 0 + return func(x int) int { + sum = sum + x + return sum + } +} +func add(num1 int, num2 int) int { + defer fmt.Println(num1) //3 + defer fmt.Println(num2) //进入栈中 栈的特点是 先进后出2 + var sum int = num1 + num2 + fmt.Println(sum) //先执行1 + return sum //4 +} + +func main() { + f := GetSum() + fmt.Println(f(1)) + fmt.Println(f(2)) + fmt.Println(f(3)) + fmt.Println(add(30, 60)) +} diff --git a/main/defers.go b/main/defers.go new file mode 100644 index 0000000..2c102b4 --- /dev/null +++ b/main/defers.go @@ -0,0 +1,45 @@ +package main + +import ( + "errors" + "fmt" +) + +func t() error { + a := 10 + b := 5 + if b == 0 { + + return errors.New("除数不能为零") + + } else { + res := a / b + fmt.Println(res) + + return nil + } +} +func main() { + err := t() + if err != nil { + fmt.Println("自定义错误") + //停止后面程序继续执行 + panic(err) + } + fmt.Println("继续执行") + + var scores [5]int + scores[0] = 10 + scores[1] = 10 + scores[2] = 30 + scores[3] = 40 + for i := 0; i < len(scores); i++ { + fmt.Println(scores[i]) + fmt.Scanln(&scores[i]) + } + //索引用key接收 value用于里面的值 + for key, value := range scores { + fmt.Println(key, value) + + } +} diff --git a/main/der.go b/main/der.go new file mode 100644 index 0000000..8d68b5a --- /dev/null +++ b/main/der.go @@ -0,0 +1,20 @@ +package main + +import "fmt" + +func main() { + var book Book + book.auth = "1u1" + book.name = "aihda" + changebook(&book) + fmt.Println(book) + +} +func changebook(book *Book) { + book.auth = "77" +} + +type Book struct { + name string + auth string +} diff --git a/main/p1.go b/main/p1.go new file mode 100644 index 0000000..ce3288d --- /dev/null +++ b/main/p1.go @@ -0,0 +1,34 @@ +package main + +import "fmt" + +type Student struct { + Name string +} + +// 函数 +func mthod(s Student) { + fmt.Println(s.Name) +} + +func mthod1(s *Student) { + fmt.Println((*s).Name) +} +func (s *Student) test02() { + fmt.Println(s.Name) +} +func main() { + var stu = Student{"笑傲"} + mthod(stu) + mthod1(&stu) + (&stu).test02() + var s = Student{ + Name: "xio", + } + fmt.Println(s) + var s3 *student = &student{ + age: 19, + } + fmt.Println(s3) + +} diff --git a/main/pg.go b/main/pg.go new file mode 100644 index 0000000..0d8c973 --- /dev/null +++ b/main/pg.go @@ -0,0 +1,26 @@ +package main + +import "fmt" + +func main() { + var a [7]int = [7]int{4, 5, 6, 6, 4, 7, 7} + var slice []int = a[2:4] + fmt.Println(len(slice)) + slice2 := append(slice, 55, 55) + fmt.Println(slice2) + fmt.Println(len(slice2)) + //默认分配10个空间 + var ip map[int]string + //key不能重复,前面会替换后面那个 value 可以重复 + ip = make(map[int]string, 10) + ip[103883] = "张三" + ip[173718] = "李四" + + ip[173718] = "李" + fmt.Println(ip) + //查找 + value, flag := ip[103883] + fmt.Println(value) + fmt.Println(flag) + fmt.Println(len(ip)) +} diff --git a/main/pp.go b/main/pp.go new file mode 100644 index 0000000..4889c4d --- /dev/null +++ b/main/pp.go @@ -0,0 +1,22 @@ +package main + +import "fmt" + +func main() { + tes() + +} + +func tes() int { + //利用defer+recover来捕获错误:defer加匿名函数调用 + defer func() { + err := recover() + if err != nil { + fmt.Println("错误已经捕获") + fmt.Println(err) + } + }() + num02 := 10 + num01 := 0 + return num02 / num01 +} diff --git a/main/project.go b/main/project.go new file mode 100644 index 0000000..9031f27 --- /dev/null +++ b/main/project.go @@ -0,0 +1,22 @@ +package main + +import "fmt" //导入别的包 先执行别的包里面 再执行自己包里面 + +//做变量初始化 + +// 后是 init函数 全局变量再执行,main函数调用 + +var num int = test() + +func test() int { + fmt.Println("test") + return 10 +} +func init() { + fmt.Println("1") + +} +func main() { + fmt.Println("2") + +} diff --git a/main/pt.go b/main/pt.go new file mode 100644 index 0000000..437d0f2 --- /dev/null +++ b/main/pt.go @@ -0,0 +1,35 @@ +package main + +import ( + "fmt" +) + +func main() { + //创建对象实例 + var T teacher = teacher{} + T.Name = "dakjda" + fmt.Println(T) + //使用指针创建对象 + var t *teacher = new(teacher) + (*t).school = "没用" + (*t).age = 19 + fmt.Println(t) + var s student + var p person + s = student(p) + fmt.Println(s) +} + +// 定义结构体 方便内存管理 +type teacher struct { + Name string + age int64 + school string +} + +type student struct { + age int +} +type person struct { + age int +} diff --git a/main/pu.go b/main/pu.go new file mode 100644 index 0000000..0a87612 --- /dev/null +++ b/main/pu.go @@ -0,0 +1,21 @@ +package main + +import ( + "fmt" +) + +func main() { + //定义切片:make函数的三个参数:1.切片类型。2.切片的长度 + slice := make([]int, 4, 20) + fmt.Println(slice) + fmt.Println(len(slice)) + fmt.Println(cap(slice)) + slice[0] = 66 + slice[1] = 88 + slice1 := []int{3, 4, 5} + fmt.Println(slice1) + //按照数组的方式操作 + for key, value := range slice1 { + fmt.Println(key, value) + } +}