Skip to content

Commit 5588ba2

Browse files
committed
xx
1 parent c0bfcea commit 5588ba2

20 files changed

+1462
-16
lines changed

README.md

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ leetcode解题的源码,解题思路在代码的注释里。
77
## 基础知识点
88

99
## [CONTENT]
10+
1011
### 动态规划
1112
[121.买卖股票的最佳时机](/questions/121.买卖股票的最佳时机.py)
1213
[122.买卖股票的最佳时机-ii](/questions/122.买卖股票的最佳时机-ii.py)
@@ -57,6 +58,27 @@ leetcode解题的源码,解题思路在代码的注释里。
5758

5859
### 字符串
5960

61+
|题目|go-解题|python-解题|tag|
62+
|:---:|:---:|:---:|:---:|
63+
|二叉树的前序遍历|[questions\144.二叉树的前序遍历.go](questions\144.二叉树的前序遍历.go)| | |
64+
|二叉树的中序遍历|[questions\94.二叉树的中序遍历.go](questions\94.二叉树的中序遍历.go)| | |
65+
|二叉树的后序遍历|[questions\145.二叉树的后序遍历.go](questions\145.二叉树的后序遍历.go)| | |
66+
|二叉树的层序遍历| | | |
67+
|二叉树的层序遍历Ⅱ| | | |
68+
|二叉树的最大深度| | | |
69+
|对称二叉树| | | |
70+
|二叉树的路径总和| | | |
71+
|从中序与后序遍历构造二叉树| | | |
72+
|从前序与中序遍历构造二叉树| | | |
73+
|填充每个节点下右侧的节点指针| | | |
74+
|填充每个节点下右侧的节点指针Ⅱ| | | |
75+
|二叉树的最近公共指针| | | |
76+
|二叉树的序列化和反序列化| | | |
77+
6078
###
6179

62-
###
80+
###
81+
82+
## 每日一题打卡
83+
|日期|go-解题|python-解题|tag|
84+
|:---:|:---:|:---:|:---:|

daidy_logs/2021年3月10日.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
### 好记性不如烂笔头
2+
你是我的东南西北 ,胜过一切苍山泱水
3+
14
### golang 函数命名前的括号
25
[下面描述中的 函数命名前的括号(a *ar)有啥用?](https://blog.csdn.net/xuq09/article/details/88627778)
36

daidy_logs/2021年3月15日.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
### 好记性不如烂笔头
22
青岛不倒我不倒,雪花不飘我不飘,不要问我多少量,手指大海方向,只要姑娘长的好,一杯雪碧我就倒
3+
### interface类型
4+
“接口定义了对象的行为”, 那么具体的实现行为就取决于对象了。
5+
Go语言的接口实现是隐式的,无须让实现接口的类型写出实现了哪些接口。这个设计被称为非侵入式设计。
6+
传统的派生式接口及类关系构建的模式,让类型间拥有强耦合的父子关系。这种关系一般会以“类派生图”的方式进行。经常可以看到大型软件极为复杂的派生树。随着系统的功能不断增加,这棵“派生树”会变得越来越复杂。
7+
8+
对于Go语言来说,非侵入式设计让实现者的所有类型均是平行的、组合的。如何组合则留到使用者编译时再确认。因此,使用GO语言时,不需要同时也不可能有“类派生图”,开发者唯一需要关注的就是“我需要什么?”,以及“我能实现什么?”。
39

410
### 常量-声明和限制
511
在Go的常量定义中,使⽤ const 关键字,并且不能使⽤ := 标识符。

daidy_logs/2021年3月16日.md

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
## 遍历结构体
2+
https://blog.csdn.net/cui_yonghua/article/details/95079778
3+
4+
使用了reflect
5+
```
6+
package main
7+
8+
import (
9+
"fmt"
10+
"reflect"
11+
)
12+
//定义Monster结构体
13+
type Monster struct {
14+
Name string `json:"name"`
15+
Age int `json:"monster_age"`
16+
Score float32 `json:"成绩"`
17+
Sex string
18+
}
19+
//方法,返回两个数的和
20+
func (s Monster) GetSum(n1, n2 int) int {
21+
return n1 + n2
22+
}
23+
//方法,接受4个值,给s赋值
24+
func (s Monster) Set(name string,age int,score float32,sex string) {
25+
s.Name = name
26+
s.Age = age
27+
s.Score = score
28+
s.Sex = sex
29+
}
30+
//方法,显示s的值
31+
func (s Monster) Print() {
32+
fmt.Println("----start----")
33+
fmt.Println(s)
34+
fmt.Println("----end----")
35+
}
36+
func TestStruct(a interface{}) {
37+
38+
typ := reflect.TypeOf(a)
39+
val := reflect.ValueOf(a) //获取reflect.Type类型
40+
41+
kd := val.Kind() //获取到a对应的类别
42+
if kd != reflect.Struct {
43+
fmt.Println("expect struct")
44+
return
45+
}
46+
//获取到该结构体有几个字段
47+
num := val.NumField()
48+
fmt.Printf("该结构体有%d个字段\n", num) //4个
49+
50+
//遍历结构体的所有字段
51+
for i := 0; i < num; i++ {
52+
fmt.Printf("Field %d:值=%v\n",i,val.Field(i))
53+
//获取到struct标签,需要通过reflect.Type来获取tag标签的值
54+
tagVal := typ.Field(i).Tag.Get("json")
55+
//如果该字段有tag标签就显示,否则就不显示
56+
if tagVal != ""{
57+
fmt.Printf("Field %d:tag=%v\n",i,tagVal)
58+
}
59+
}
60+
//获取到该结构体有多少个方法
61+
numOfMethod := val.NumMethod()
62+
fmt.Printf("struct has %d methods\n",numOfMethod)
63+
64+
//方法的排序默认是按照函数名的顺序(ASCII码)
65+
val.Method(1).Call(nil) //获取到第二个方法,调用它
66+
67+
//调用结构体的第1个方法,Method(0)
68+
var params []reflect.Value
69+
params = append(params,reflect.ValueOf(10))
70+
params = append(params,reflect.ValueOf(40))
71+
//传入的参数是 []reflect.Value,返回 []reflect.Value
72+
res := val.Method(0).Call(params)
73+
//返回结果,返回的结果是 []reflect.Value
74+
fmt.Println("返回的结果 res=",res[0].Int())
75+
76+
}
77+
78+
func main() {
79+
//创建一个Monster实例
80+
var a Monster = Monster{
81+
Name:"张三丰",
82+
Age:99,
83+
Score:80.5,
84+
}
85+
//将Monster实例传递给TestStruct函数
86+
TestStruct(a)
87+
}
88+
```

0 commit comments

Comments
 (0)