'init'
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
.idea/
|
||||
test
|
||||
44
demo/dem.go
Normal file
44
demo/dem.go
Normal file
@@ -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 "))
|
||||
|
||||
}
|
||||
26
demo/demo01.go
Normal file
26
demo/demo01.go
Normal file
@@ -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])
|
||||
|
||||
}
|
||||
}
|
||||
37
demo/demo3.go
Normal file
37
demo/demo3.go
Normal file
@@ -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)
|
||||
}
|
||||
26
demo/p2.go
Normal file
26
demo/p2.go
Normal file
@@ -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
|
||||
}
|
||||
5
demo/te.go
Normal file
5
demo/te.go
Normal file
@@ -0,0 +1,5 @@
|
||||
package main
|
||||
|
||||
func main() {
|
||||
|
||||
}
|
||||
52
demo/test.go
Normal file
52
demo/test.go
Normal file
@@ -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()
|
||||
|
||||
}
|
||||
26
demo/test01.go
Normal file
26
demo/test01.go
Normal file
@@ -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()
|
||||
}
|
||||
26
main.go
Normal file
26
main.go
Normal file
@@ -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))
|
||||
}
|
||||
45
main/defers.go
Normal file
45
main/defers.go
Normal file
@@ -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)
|
||||
|
||||
}
|
||||
}
|
||||
20
main/der.go
Normal file
20
main/der.go
Normal file
@@ -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
|
||||
}
|
||||
34
main/p1.go
Normal file
34
main/p1.go
Normal file
@@ -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)
|
||||
|
||||
}
|
||||
26
main/pg.go
Normal file
26
main/pg.go
Normal file
@@ -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))
|
||||
}
|
||||
22
main/pp.go
Normal file
22
main/pp.go
Normal file
@@ -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
|
||||
}
|
||||
22
main/project.go
Normal file
22
main/project.go
Normal file
@@ -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")
|
||||
|
||||
}
|
||||
35
main/pt.go
Normal file
35
main/pt.go
Normal file
@@ -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
|
||||
}
|
||||
21
main/pu.go
Normal file
21
main/pu.go
Normal file
@@ -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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user