-
Notifications
You must be signed in to change notification settings - Fork 8
/
guaxiang.go
139 lines (118 loc) · 2.86 KB
/
guaxiang.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
package yi
import (
"math/bits"
"strconv"
)
type Yao int
const (
ChuYao Yao = iota
ErYao
SanYao
SiYao
WuYao
ShangYao
YaoMax
)
//GuaXiang 卦象
type GuaXiang struct {
GuaXu int //卦序
ShangGua string //上卦
ShangShu int //上卦数
XiaGua string //下卦
XiaShu int //下卦数
JiXiong string //吉凶(?)
GuaXiang string //卦象
GuaMing string //卦名
GuaYi string //卦意(邵雍)
FuHao string //符号
GuaYaos [YaoMax]*GuaYao //初,二,三,四,五,上
Yong string //用九,用六
YongJiXiong string //用九,用六吉凶
}
var gx map[string]*GuaXiang
func init() {
gx = make(map[string]*GuaXiang)
file64gua, err := DataFiles.Open("data/64gua.csv")
if err != nil {
panic(err)
}
records, err := readData(file64gua)
if err != nil {
panic(err)
}
for _, record := range records {
guaxu, err := strconv.ParseInt(record[0], 10, bits.UintSize)
if err != nil {
panic(err)
}
shangshu, err := strconv.ParseInt(record[3], 10, bits.UintSize)
if err != nil {
panic(err)
}
xiashu, err := strconv.ParseInt(record[5], 10, bits.UintSize)
if err != nil {
panic(err)
}
guaxiang := GuaXiang{
GuaXu: int(guaxu),
ShangGua: record[2],
ShangShu: int(shangshu),
XiaGua: record[4],
XiaShu: int(xiashu),
JiXiong: record[6],
GuaXiang: record[7],
GuaMing: record[8],
GuaYi: record[9],
FuHao: record[10],
Yong: record[29],
YongJiXiong: record[30],
}
guyao1 := GuaYao{
Yao: record[11], //初爻
JiXiong: record[12], //初爻吉凶
NvMing: record[13], //初爻女命
}
guaxiang.GuaYaos[0] = &guyao1
guyao2 := GuaYao{
Yao: record[14], //二爻
JiXiong: record[15], //二爻吉凶
NvMing: record[16], //二爻女命
}
guaxiang.GuaYaos[1] = &guyao2
guyao3 := GuaYao{
Yao: record[17], //三爻
JiXiong: record[18], //三爻吉凶
NvMing: record[19], //三爻女命
}
guaxiang.GuaYaos[2] = &guyao3
guyao4 := GuaYao{
Yao: record[20], //四爻
JiXiong: record[21], //四爻吉凶
NvMing: record[22], //四爻女命
}
guaxiang.GuaYaos[3] = &guyao4
guyao5 := GuaYao{
Yao: record[23], //五爻
JiXiong: record[24], //五爻吉凶
NvMing: record[25], //五爻女命
}
guaxiang.GuaYaos[4] = &guyao5
guyao6 := GuaYao{
Yao: record[26], //上爻
JiXiong: record[27], //上爻吉凶
NvMing: record[28], //上爻女命
}
guaxiang.GuaYaos[5] = &guyao6
gxIndex := record[1]
if len(gxIndex) < 1 {
panic("index is wrong")
}
gx[gxIndex] = &guaxiang
}
}
func getGuaXiangs() map[string]*GuaXiang {
return gx
}
func GetGuaXiang(guaIdx string) *GuaXiang {
return gx[guaIdx]
}