数据表
星耀基础信息、天干地支信息、顺序常量与全部标识常量。
排盘算法的输入表与语言无关标识常量。
StarsInfo
用途 取星耀基础信息表。
签名
func StarsInfo() (map[string]StarInfo, error)返回值 星耀标识 → StarInfo。只有二十颗星有记录:
十四主星加文昌、文曲、火星、铃星、擎羊、陀罗。
| 字段 | 类型 | 说明 |
|---|---|---|
Brightness | []string | 十二宫亮度标识,索引 0 为寅宫;该宫无亮度则为空串 |
FiveElements | string | 五行;原表未填时为空串 |
YinYang | string | 阴阳;原表未填时为空串 |
示例
info, _ := iztro.StarsInfo()
fmt.Println(len(info))
fmt.Printf("%+v\n", info[iztro.StarZiweiMaj])
fmt.Printf("%q\n", info[iztro.StarTaiyangMaj].FiveElements)输出
20
{Brightness:[wang wang de wang miao miao wang wang de wang ping miao] FiveElements:土 YinYang:阴}
""边界与陷阱
五行与阴阳有空缺
表中部分星耀的五行或阴阳未填:太阳与七杀两项皆为空串, 贪狼、天相、天梁、破军的阴阳为空串,六颗辅星两项皆为空串。
HeavenlyStems
用途 取天干信息表。
斗数含义 天干的四化表是四化系统的根:生年干决定生年四化, 宫干决定该宫飞出的四化,运限干决定该层级的四化。
签名
func HeavenlyStems() (map[string]HeavenlyStemInfo, error)返回值 天干标识 → HeavenlyStemInfo:
| 字段 | 类型 | 说明 |
|---|---|---|
YinYang | string | 阴阳 |
FiveElements | string | 五行 |
Crash | string | 对冲天干标识;戊、己无对冲,为空串 |
Mutagen | []string | 四化四星标识,顺序为禄、权、科、忌 |
示例
stems, _ := iztro.HeavenlyStems()
fmt.Printf("%+v\n", stems[iztro.StemJia])
fmt.Printf("戊干对冲: %q\n", stems[iztro.StemWu].Crash)输出
{YinYang:阳 FiveElements:木 Crash:gengHeavenly Mutagen:[lianzhenMaj pojunMaj wuquMaj taiyangMaj]}
戊干对冲: ""EarthlyBranches
用途 取地支信息表。
签名
func EarthlyBranches() (map[string]EarthlyBranchInfo, error)返回值 地支标识 → EarthlyBranchInfo:
| 字段 | 类型 | 说明 |
|---|---|---|
YinYang | string | 阴阳,决定大限与长生十二神的顺逆 |
FiveElements | string | 五行 |
Crash | string | 对冲地支标识 |
Soul | string | 命主星标识(按命宫地支查) |
Body | string | 身主星标识(按生年地支查) |
Inside | string | 对应脏腑 |
Outside | string | 对应身体部位 |
HealthTip | string | 健康提示 |
Inside / Outside / HealthTip 三项只有中文一种写法,不参与国际化。
示例
branches, _ := iztro.EarthlyBranches()
fmt.Printf("%+v\n", branches[iztro.BranchZi])输出
{YinYang:阳 FiveElements:水 Crash:wuEarthly Soul:tanlangMaj Body:huoxingMin Inside:胆 Outside:下体 HealthTip:生殖系统、膀胱、尿道之疾病,听觉障碍}GetConstants
用途 取顺序常量与推算规则表。
签名
func GetConstants() (Constants, error)返回值 Constants:
| 字段 | 类型 | 说明 |
|---|---|---|
Languages | []string | 支持的语言代码 |
HeavenlyStems | []string | 天干顺序 |
EarthlyBranches | []string | 地支顺序 |
Zodiac | []string | 生肖标识,按地支顺序 |
Signs | []string | 星座标识,按黄道顺序 |
Palaces | []string | 十二宫名,从命宫起逆时针排:命、父母、福德、田宅、官禄、仆役、迁移、疾厄、财帛、子女、夫妻、兄弟 |
Gender | map[string]string | 男女各自的阴阳 |
ChineseTime | []string | 时辰标识,早子时起、晚子时止 |
TimeRange | []string | 时辰对应的钟点区间 |
TigerRule | map[string]string | 五虎遁:年干推正月天干 |
RatRule | map[string]string | 五鼠遁:日干推子时天干 |
Mutagen | []string | 四化顺序 |
FiveElementsClass | map[string]int | 五行局标识 → 局数(水二局 2 …… 火六局 6) |
示例
c, _ := iztro.GetConstants()
fmt.Println(c.Languages)
fmt.Println(c.Zodiac[:3], c.ChineseTime[12], c.TimeRange[2])
fmt.Println(c.Gender)
fmt.Println("甲年正月干:", c.TigerRule[iztro.StemJia])
fmt.Println(c.Palaces)
fmt.Println(c.FiveElementsClass[iztro.ClassWood3rd], iztro.FiveElementsClassNumber(iztro.ClassFire6th))输出
[en-US ja-JP ko-KR zh-CN zh-TW vi-VN]
[rat ox tiger] lateRatHour 03:00~05:00
map[female:阴 male:阳]
甲年正月干: bingHeavenly
[soulPalace parentsPalace spiritPalace propertyPalace careerPalace friendsPalace surfacePalace healthPalace wealthPalace childrenPalace spousePalace siblingsPalace]
3 6边界与陷阱
Palaces 是逆时针序,不是盘上位置
Palaces 给的是宫名的排列顺序,不是某张盘上第 i 格叫什么。
要那个用 GetPalaceNames(soulIndex)。
局数也可以直接查
FiveElementsClassNumber(key) 不必先取 Constants,未知标识返回 0。
Languages 的顺序是 iztro 词表的合并次序(en-US 起),不是常量的声明次序。
KeyOf 的逐语言扫描顺序与它一致。
标识常量
包里的标识常量取值就是语言无关标识,可直接与数据对象的 *Key 字段比较。
| 前缀 | 数量 | 例 |
|---|---|---|
Palace* | 12 + 2 | PalaceSoul、PalaceWealth、PalaceBody、PalaceOriginal |
Star* | 162 | StarZiweiMaj、StarLucunMin、StarYunlu |
Stem* | 10 | StemJia、StemGeng |
Branch* | 12 | BranchZi、BranchWu |
Mutagen* | 4 | MutagenLu、MutagenJi |
Brightness* | 7 | BrightnessMiao、BrightnessWang |
Class* | 5 | ClassWater2nd、ClassWood3rd、ClassMetal4th、ClassEarth5th、ClassFire6th |
Scope* | 6 | ScopeOrigin、ScopeDecadal |
StarType* | 8 | StarTypeMajor、StarTypeTough |
Gender* | 2 | GenderMale、GenderFemale(类型 Gender) |
Language* | 6 | LanguageZhCN、LanguageZhTW、LanguageEnUS、LanguageJaJP、LanguageKoKR、LanguageViVN(类型 Language) |
*LeapMonth* | 3 | NotLeapMonth、LeapMonthKeep、LeapMonthFixed(类型 LeapMonth,ByLunar 的闰月处理方式) |
Gender、Language、LeapMonth 是具名字符串类型:作为入口参数时编译器会挡住把别的字符串误传进来的错误,
字面量("male"、"zh-CN")仍可直接写;Astrolabe.GenderKey 与 Astrolabe.Language 字段也是这两个类型。
其余常量是无类型的字符串常量,与 *Key 字段直接比较。
配置类另有六组:
| 前缀 | 取值 |
|---|---|
YearDivide* | YearDivideNormal / YearDivideExact |
HoroscopeDivide* | HoroscopeDivideNormal / HoroscopeDivideExact |
AgeDivide* | AgeDivideNormal / AgeDivideBirthday |
DayDivide* | DayDivideForward / DayDivideCurrent |
Algorithm* | AlgorithmDefault / AlgorithmZhongzhou |
Astro* | AstroHeaven / AstroEarth / AstroHuman |
五行局常量的前缀是 Class 不是 FiveElements
写 iztro.ClassWood3rd,不是 iztro.FiveElementsWood3rd——
后者不存在,编译不过。取局数用 iztro.FiveElementsClassNumber(key)。
示例
soul := chart.Palace(iztro.PalaceSoul)
fmt.Println(soul.MajorStars[0].Key == iztro.StarZiweiMaj)
fmt.Println(iztro.StarZiweiMaj, iztro.MutagenLu, iztro.PalaceWealth)
fmt.Println(iztro.ClassWood3rd, iztro.GenderFemale, iztro.LanguageEnUS)
// 排盘入口的 gender 与 language 也用这两组常量
en, err := iztro.BySolar("2000-8-16", 2, iztro.GenderFemale, true, iztro.LanguageEnUS, nil)
if err != nil {
log.Fatal(err)
}
fmt.Println(en.Palace(iztro.PalaceSoul).MajorStars[0].Name)输出
true
ziweiMaj sihuaLu wealthPalace
wood3rd female en-US
emperor常量与字符串等价
它们都是无类型字符串常量,chart.Palace("soulPalace") 与
chart.Palace(iztro.PalaceSoul) 完全等价。
常量的价值在于 IDE 补全与拼写检查,而非类型约束。