Gox語(yǔ)言常用的內(nèi)置函數(shù)-GX6

Gox語(yǔ)言不僅包含了大部分Go語(yǔ)言的標(biāo)準(zhǔn)庫(kù)對(duì)象轮蜕,以及很多常用的第三方庫(kù)枷莉,還提供了很多簡(jiǎn)潔實(shí)用的內(nèi)置函數(shù)。常用的內(nèi)置函數(shù)包括:

最新內(nèi)置函數(shù)清單(左欄引號(hào)內(nèi)的是)

        // 其中 tk.開(kāi)頭的函數(shù)都是github.com/topxeq/tk包中的鼎姐,可以去pkg.go.dev/github.com/topxeq/tk查看函數(shù)定義

        // common related 一般函數(shù)
        "defined":         defined,               // 查看某變量是否已經(jīng)定義郭赐,注意參數(shù)是字符串類(lèi)型的變量名,例: if defined("a") {...}
        "pass":            tk.Pass,               // 沒(méi)有任何操作的函數(shù)宙帝,一般用于腳本結(jié)尾避免腳本返回一個(gè)結(jié)果導(dǎo)致輸出亂了
        "isDefined":       isDefined,             // 判斷某變量是否已經(jīng)定義丧凤,與defined的區(qū)別是傳遞的是變量名而不是字符串方式的變量,例: if isDefined(a) {...}
        "isDef":           isDefined,             // 等同于isDef
        "isUndefined":     isUndefined,           // 判斷某變量是否未定義
        "isUndef":         isUndefined,           // 等同于isUndefined
        "isNil":           isNil,                 // 判斷一個(gè)變量或表達(dá)式是否為nil
        "isValid":         isValid,               // 判斷某變量是否已經(jīng)定義步脓,并且不是nil愿待,如果傳入了第二個(gè)參數(shù)浩螺,還可以判斷該變量是否類(lèi)型是該類(lèi)型,例: if isValid(a, "string") {...}
        "isValidNotEmpty": isValidNotEmpty,       // 判斷某變量是否已經(jīng)定義呼盆,并且不是nil或空字符串年扩,如果傳入了第二個(gè)參數(shù),還可以判斷該變量是否類(lèi)型是該類(lèi)型访圃,例: if isValid(a, "string") {...}
        "isValidX":        isValidNotEmpty,       // 等同于isValidNotEmpty
        "eval":            qlEval,                // 運(yùn)行一段Gox語(yǔ)言代碼并獲得其返回值厨幻,返回值可以放于名為outG的全局變量中,也可以作為最后一個(gè)表達(dá)式的返回值返回
        "typeOf":          tk.TypeOfValue,        // 給出某變量的類(lèi)型名
        "typeOfReflect":   tk.TypeOfValueReflect, // 給出某變量的類(lèi)型名(使用了反射方式)
        "typeOfVar":       typeOfVar,             // 給出某變量的內(nèi)部類(lèi)型名腿时,注意參數(shù)是字符串類(lèi)型的變量名
        "exit":            tk.Exit,               // 立即退出腳本的執(zhí)行况脆,可以帶一個(gè)整數(shù)作為參數(shù),也可以沒(méi)有
        "setValue":        tk.SetValue,           // 用反射的方式設(shè)定一個(gè)變量的值
        "getValue":        tk.GetValue,           // 用反射的方式獲取一個(gè)變量的值
        "getPointer":      tk.GetPointer,         // 用反射的方式獲取一個(gè)變量的指針
        "getAddr":         tk.GetAddr,            // 用反射的方式獲取一個(gè)變量的地址
        "setVar":          tk.SetVar,             // 設(shè)置一個(gè)全局變量批糟,例: setVar("a", "value of a")
        "getVar":          tk.GetVar,             // 獲取一個(gè)全局變量的值格了,例: v = getVar("a")
        "ifThenElse":      tk.IfThenElse,         // 相當(dāng)于三元操作符a?b:c,但注意a徽鼎、b盛末、c三個(gè)表達(dá)式仍需語(yǔ)法正確
        "ifElse":          tk.IfThenElse,         // 相當(dāng)于ifThenElse
        "ifThen":          tk.IfThenElse,         // 相當(dāng)于ifThenElse
        "deepClone":       tk.DeepClone,
        "deepCopy":        tk.DeepCopyFromTo,
        "run":             runFile,
        "runCode":         runCode,
        "runScript":       runScript,
        "magic":           magic,

        // debug relate 調(diào)試相關(guān)
        "dump":   tk.Dump, // 輸出一個(gè)或多個(gè)對(duì)象信息供參考
        "dumpf":  tk.Dumpf,
        "sdump":  tk.Sdump, // 生成一個(gè)或多個(gè)對(duì)象信息供參考
        "sdumpf": tk.Sdumpf,

        // output related 輸出相關(guān)
        "pv":        printValue,   // 輸出一個(gè)變量的值,注意參數(shù)是字符串類(lèi)型的變量名否淤,例: pv("a")
        "pr":        tk.Pr,        // 等同于其他語(yǔ)言中的print
        "prf":       tk.Printf,    // 等同于其他語(yǔ)言中的printf
        "pln":       tk.Pln,       // 等同于其他語(yǔ)言中的println
        "printfln":  tk.Pl,        // 等同于其他語(yǔ)言中的printf悄但,但多輸出一個(gè)回車(chē)換行
        "pl":        tk.Pl,        // 等同于printfln
        "sprintf":   fmt.Sprintf,  // 等同于其他語(yǔ)言中的sprintf
        "spr":       fmt.Sprintf,  // 等同于sprintf
        "fprintf":   fmt.Fprintf,  // 等同于其他語(yǔ)言中的frintf
        "plv":       tk.Plv,       // 輸出某變量或表達(dá)式的內(nèi)容/值,以Go語(yǔ)言?xún)?nèi)部的表達(dá)方式石抡,例如字符串將加上雙引號(hào)
        "plvx":      tk.Plvx,      // 輸出某變量或表達(dá)式的內(nèi)容/值和類(lèi)型等信息
        "plNow":     tk.PlNow,     // 相當(dāng)于pl檐嚣,但前面多加了一個(gè)時(shí)間標(biāo)記
        "plVerbose": tk.PlVerbose, // 相當(dāng)于pl,但前面多了一個(gè)布爾類(lèi)型的參數(shù)啰扛,可以傳入一個(gè)verbose變量嚎京,指定是否輸出該信息,例:
        // v = false
        // plVerbose(v, "a: %v", 3) // 由于v的值為false隐解,因此本條語(yǔ)句將不輸出
        "vpl":    tk.PlVerbose, // 等同于plVerbose
        "plvsr":  tk.Plvsr,     // 輸出多個(gè)變量或表達(dá)式的值鞍帝,每行一個(gè)
        "plerr":  tk.PlErr,     // 快捷輸出一個(gè)error類(lèi)型的值
        "plExit": tk.PlAndExit, // 相當(dāng)于pl然后exit退出腳本的執(zhí)行

        // input related 輸入相關(guān)
        "getChar":      tk.GetChar,           // 從命令行獲取用戶的輸入,成功返回一個(gè)表示字符字符串(控制字符代碼+字符代碼)煞茫,否則返回error對(duì)象
        "getChar2":     tk.GetChar2,          // 從命令行獲取用戶的輸入膜眠,成功返回一個(gè)表示字符ASCII碼的字符串,否則返回error對(duì)象
        "getInput":     tk.GetUserInput,      // 從命令行獲取用戶的輸入
        "getInputf":    tk.GetInputf,         // 從命令行獲取用戶的輸入溜嗜,同時(shí)可以用printf先輸出一個(gè)提示信息
        "getPasswordf": tk.GetInputPasswordf, // 從命令行獲取密碼輸入,輸入信息將不顯示

        // math related數(shù)學(xué)相關(guān)
        "bitXor":       tk.BitXor,               // 異或運(yùn)算
        "adjustFloat":  tk.AdjustFloat,          // 去除浮點(diǎn)數(shù)的計(jì)算誤差架谎,用法:adjustFloat(4.000000002, 2)炸宵,第二個(gè)參數(shù)表示保留幾位小數(shù)點(diǎn)后數(shù)字
        "getRandomInt": tk.GetRandomIntLessThan, // 獲取[0-maxA)之間的隨機(jī)整數(shù)
        "getRandom":    tk.GetRandomFloat,       // 獲取[0.0-1.0)之間的隨機(jī)浮點(diǎn)數(shù)

        // string related 字符串相關(guān)
        "trim":                 trim,                      // 取出字符串前后的空白字符,可選的第二個(gè)參數(shù)可以是待去掉的字符列表谷扣,等同于tk.Trim, 但支持Undefind(轉(zhuǎn)空字符串)和nil
        "strTrim":              tk.Trim,                   // 等同于tk.Trim
        "trimSafely":           tk.TrimSafely,             // 取出字符串前后的空白字符土全,非字符串則返回默認(rèn)值空捎琐,可以通過(guò)第二個(gè)(可選)參數(shù)設(shè)置默認(rèn)值
        "trimx":                tk.TrimSafely,             // 等同于trimSafely
        "trimX":                tk.TrimSafely,             // 等同于trimSafely
        "toLower":              strings.ToLower,           // 字符串轉(zhuǎn)小寫(xiě)
        "toUpper":              strings.ToUpper,           // 字符串轉(zhuǎn)大寫(xiě)
        "padStr":               tk.PadString,              // 字符串補(bǔ)零等填充操作,例如 s1 = padStr(s0, 5, "-fill=0", "-right=true")裹匙,第二個(gè)參數(shù)是要補(bǔ)齊到幾位瑞凑,默認(rèn)填充字符串fill為字符串0,right(表示是否在右側(cè)填充)為false(也可以直接寫(xiě)成-right)概页,因此上例等同于padStr(s0, 5)籽御,如果fill字符串不止一個(gè)字符,最終補(bǔ)齊數(shù)量不會(huì)多于第二個(gè)參數(shù)指定的值惰匙,但有可能少
        "limitStr":             tk.LimitString,            // 超長(zhǎng)字符串截短技掏,用法 s2 = limitStr("abcdefg", 3, "-suffix=..."),將得到abc...项鬼,suffix默認(rèn)為...
        "strContains":          strings.Contains,          // 判斷字符串中是否包含某個(gè)字串
        "strContainsIn":        tk.ContainsIn,             // 判斷字符串中是否包含某幾個(gè)字串
        "strReplace":           tk.Replace,                // 替換字符串中的字串
        "strReplaceIn":         tk.StringReplace,          // strReplaceIn("2020-02-02 08:09:15", "-", "", ":", "", " ", "")
        "strJoin":              strJoin,                   // 連接一個(gè)字符串?dāng)?shù)組哑梳,以指定的分隔符,例: s = strJoin(listT, "\n")
        "strSplit":             strings.Split,             // 拆分一個(gè)字符串為數(shù)組绘盟,例: listT = strSplit(strT, "\n")
        "strSplitByLen":        tk.SplitByLen,             // 按長(zhǎng)度拆分一個(gè)字符串為數(shù)組鸠真,注意由于是rune,可能不是按字節(jié)長(zhǎng)度龄毡,例: listT = strSplitByLen(strT, 10)吠卷,可以加第三個(gè)參數(shù)表示字節(jié)數(shù)不能超過(guò)多少,加第四個(gè)參數(shù)表示分隔符(遇上分隔符從分隔符后重新計(jì)算長(zhǎng)度稚虎,也就是說(shuō)分割長(zhǎng)度可以超過(guò)指定的個(gè)數(shù)撤嫩,一般用于有回車(chē)的情況)
        "splitLines":           tk.SplitLines,             // 相當(dāng)于strSplit(strT, "\n")
        "strSplitLines":        tk.SplitLines,             // 相當(dāng)于splitLines
        "startsWith":           tk.StartsWith,             // 判斷字符串是否以某子串開(kāi)頭
        "strStartsWith":        tk.StartsWith,             // 等同于startsWith
        "endsWith":             tk.EndsWith,               // 判斷字符串是否以某子串結(jié)尾
        "strEndsWith":          tk.EndsWith,               // 等同于endsWith
        "strIn":                tk.InStrings,              // 判斷字符串是否在一個(gè)字符串列表中出現(xiàn),函數(shù)定義: strIn(strA string, argsA ...string) bool蠢终,第一個(gè)可變參數(shù)如果以“-”開(kāi)頭序攘,將表示參數(shù)開(kāi)關(guān),-it表示忽略大小寫(xiě)寻拂,并且trim再比較(strA并不trim)
        "strFindAll":           tk.FindSubStringAll,       // 尋找字符串中某個(gè)子串出現(xiàn)的所有位置程奠,函數(shù)定義: func strFindAll(strA string, subStrA string) [][]int,每個(gè)匹配是兩個(gè)整數(shù)祭钉,分別表示開(kāi)頭和結(jié)尾(不包含)
        "newStringBuilder":     newStringBuilder,          // 新建一個(gè)strings.Builder對(duì)象
        "newStringBuffer":      newStringBuilder,          // 同newStringBuilder
        "getNowStr":            tk.GetNowTimeStringFormal, // 獲取一個(gè)表示當(dāng)前時(shí)間的字符串瞄沙,格式:2020-02-02 08:09:15
        "getNowString":         tk.GetNowTimeStringFormal, // 等同于getNowStr
        "getNowStrCompact":     tk.GetNowTimeString,       // 獲取一個(gè)簡(jiǎn)化的表示當(dāng)前時(shí)間的字符串,格式:20200202080915
        "getNowStringCompact":  tk.GetNowTimeStringFormal, // 等同于getNowStringCompact
        "getNowDateStrCompact": getNowDateStrCompact,      // 獲取一個(gè)簡(jiǎn)化的表示當(dāng)前日期的字符串慌核,格式:20210215
        "genTimeStamp":         tk.GetTimeStampMid,        // 生成時(shí)間戳距境,格式為13位的Unix時(shí)間戳1640133706954证九,例:timeStampT = genTimeStamp(time.Now())
        "genRandomStr":         tk.GenerateRandomStringX,  // 生成隨機(jī)字符串备埃,函數(shù)定義: genRandomStr("-min=6", "-max=8", "-noUpper", "-noLower", "-noDigit", "-special", "-space", "-invalid")
        "generateRandomString": tk.GenerateRandomString,   // 生成隨機(jī)字符串救湖,函數(shù)定義: (minCharA, maxCharA int, hasUpperA, hasLowerA, hasDigitA, hasSpecialCharA, hasSpaceA bool, hasInvalidChars bool) string

        // regex related 正則表達(dá)式相關(guān)
        "regMatch":        tk.RegMatchX,          // 判斷某字符串是否完整符合某表達(dá)式振劳,例: if regMatch(mailT, `^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,8})$`) {...}
        "regContains":     tk.RegContainsX,       // 判斷某字符串是否包含符合正則表達(dá)式的子串丸氛,例: if regContains("abccd", "b.c") {...}
        "regContainsIn":   tk.RegContainsIn,      // 判斷字符串中是否包含符合正則表達(dá)式的某幾個(gè)字串
        "regCount":        tk.RegCount,           // 判斷某字符串包含幾個(gè)符合正則表達(dá)式的子串
        "regFind":         tk.RegFindFirstX,      // 根據(jù)正則表達(dá)式在字符串中尋找第一個(gè)匹配阻桅,函數(shù)定義: func regFind(strA, patternA string, groupA int) string
        "regFindAll":      tk.RegFindAllX,        // 根據(jù)正則表達(dá)式在字符串中尋找所有匹配鸯匹,函數(shù)定義: func regFindAll(strA, patternA string, groupA int) []string
        "regFindIndex":    tk.RegFindFirstIndexX, // 根據(jù)正則表達(dá)式在字符串中第一個(gè)匹配的為止伦腐,函數(shù)定義: func regFindIndex(strA, patternA string) (int, int)
        "regFindAllIndex": tk.RegFindAllIndexX,   // 根據(jù)正則表達(dá)式搜索在字符串中所有匹配,函數(shù)定義: func regFindAllIndex(strA, patternA string) [][]int
        "regReplace":      tk.RegReplaceX,        // 根據(jù)正則表達(dá)式在字符串中進(jìn)行替換疼鸟,函數(shù)定義: regReplace(strA, patternA, replaceA string) string, 例:regReplace("abcdefgabcdfg", "(b.*)f(ga.*?)g", "${1}_${2}")后控,結(jié)果是abcde_gabcdf
        "regSplit":        tk.RegSplitX,          // 根據(jù)正則表達(dá)式分割字符串(以符合條件的匹配來(lái)分割),函數(shù)定義: regSplit(strA, patternA string, nA ...int) []string

        // conversion related 轉(zhuǎn)換相關(guān)
        "nilToEmpty":      nilToEmpty,                     // 將nil空镜、error等值都轉(zhuǎn)換為空字符串浩淘,其他的轉(zhuǎn)換為字符串, 加-nofloat參數(shù)將浮點(diǎn)數(shù)轉(zhuǎn)換為整數(shù),-trim參數(shù)將結(jié)果trim
        "nilToEmptyOk":    nilToEmptyOk,                   // 將nil姑裂、error等值都轉(zhuǎn)換為空字符串馋袜,其他的轉(zhuǎn)換為字符串, 加-nofloat參數(shù)將浮點(diǎn)數(shù)轉(zhuǎn)換為整數(shù),-trim參數(shù)將結(jié)果trim舶斧,第二個(gè)返回值是bool類(lèi)型欣鳖,如果值是undefined,則返回false茴厉,其他情況為true
        "intToStr":        tk.IntToStrX,                   // 整數(shù)轉(zhuǎn)字符串
        "strToInt":        tk.StrToIntWithDefaultValue,    // 字符串轉(zhuǎn)整數(shù)
        "floatToStr":      tk.Float64ToStr,                // 浮點(diǎn)數(shù)轉(zhuǎn)字符串
        "strToFloat":      tk.StrToFloat64,                // 字符串轉(zhuǎn)浮點(diǎn)數(shù)泽台,如果第二個(gè)參數(shù)(可選)存在,則默認(rèn)錯(cuò)誤時(shí)返回該值矾缓,否則錯(cuò)誤時(shí)返回-1
        "timeToStr":       tk.FormatTime,                  // 時(shí)間轉(zhuǎn)字符串怀酷,函數(shù)定義: timeToStr(timeA time.Time, formatA ...string) string,formatA可為"2006-01-02 15:04:05"(默認(rèn)值)等字符串嗜闻,為compact代表“20060102150405”
        "timeStampToTime": tk.GetTimeFromUnixTimeStampMid, // Unix時(shí)間戳轉(zhuǎn)時(shí)間(time.Time)蜕依,支持10位和13位的時(shí)間戳,用法: timeT = timeToStr(timeStampToTime("1641139200"), "compact") 琉雳,得到20220103000000
        "formatTime":      tk.FormatTime,                  // 等同于timeToStr
        "strToTime":       strToTime,                      // 字符串轉(zhuǎn)時(shí)間
        "toTime":          tk.ToTime,                      // 字符串或時(shí)間轉(zhuǎn)時(shí)間
        "bytesToData":     tk.BytesToData,                 // 字節(jié)數(shù)組轉(zhuǎn)任意類(lèi)型變量样眠,可選參數(shù)-endian=B或L指定使用BigEndian字節(jié)順序還是LittleEndian,函數(shù)定義func(bytesA []byte, dataA interface{}, optsA ...string) error翠肘,其中dataA為接收變量
        "dataToBytes":     tk.DataToBytes,                 // 任意類(lèi)型值轉(zhuǎn)字節(jié)數(shù)組檐束,可選參數(shù)-endian=B或L指定使用BigEndian字節(jié)順序還是LittleEndian
        "toStr":           tk.ToStr,                       // 任意值轉(zhuǎn)字符串
        "toInt":           tk.ToInt,                       // 任意值轉(zhuǎn)整數(shù)
        "toFloat":         tk.ToFloat,                     // 任意值轉(zhuǎn)浮點(diǎn)數(shù)
        "toByte":          tk.ToByte,                      // 任意值轉(zhuǎn)字節(jié)
        "toSimpleMap":     tk.SimpleMapToString,           // 將一個(gè)map(map[string]string或map[string]interface{})轉(zhuǎn)換為Simple Map字符串
        "fromSimpleMap":   tk.LoadSimpleMapFromString,     // 將一個(gè)Simple Map字符串轉(zhuǎn)換為map[string]string

        "hexToBytes": tk.HexToBytes, // 將16進(jìn)制字符串轉(zhuǎn)換為字節(jié)數(shù)組([]byte)
        "bytesToHex": tk.BytesToHex, // 將字節(jié)數(shù)組([]byte)轉(zhuǎn)換為16進(jìn)制字符串
        "hexEncode":  tk.StrToHex,   // 16進(jìn)制編碼
        "hex":        tk.StrToHex,   // 等同于hexEncode
        "strToHex":   tk.StrToHex,   // 等同于hexEncode
        "toHex":      tk.ToHex,      // 將任意值轉(zhuǎn)換為16進(jìn)制形式,注意是小寫(xiě)格式
        "hexDecode":  tk.HexToStr,   // 16進(jìn)制解碼
        "hexToStr":   tk.HexToStr,   // 等同于hexDecode

        "mssToMsi": tk.MSS2MSI, // 轉(zhuǎn)換map[string]string到map[string]interface{}
        "msiToMss": tk.MSI2MSS, // 轉(zhuǎn)換map[string]interface{}到map[string]string

        "mssToCharMap": charlang.MssToMap, // 轉(zhuǎn)換map[string]string到charlang中的map
        "msiToCharMap": charlang.MsiToMap, // 轉(zhuǎn)換map[string]interface{}到charlang中的map

        "toInterface": tk.ToInterface, // 任意值轉(zhuǎn)interface{}
        "toPointer":   tk.ToPointer,   // 任意值轉(zhuǎn)相應(yīng)的指針
        "toVar":       tk.ToVar,       // 任意值(*interface{})轉(zhuǎn)相應(yīng)的值

        // array/map related 數(shù)組(切片)/映射(字典)相關(guān)
        "removeItems":  tk.RemoveItemsInArray,               // 從切片中刪除指定的項(xiàng)束倍,例: removeItems(aryT, 3, 5)被丧,注意這是表示刪除序號(hào)為3到5的項(xiàng)目(序號(hào)從0開(kāi)始),共三項(xiàng)
        "removeItem":   tk.RemoveItemsInArray,               // 等同于removeItems
        "remove":       tk.RemoveItemsInArray,               // 等同于removeItems
        "getMapString": tk.SafelyGetStringForKeyWithDefault, // 從映射中獲得指定的鍵值绪妹,避免返回nil甥桂,函數(shù)定義:func getMapString(mapA map[string]string, keyA string, defaultA ...string) string, 不指定defaultA將返回空字符串
        "getMapItem":   getMapItem,                          // 類(lèi)似于getMapString邮旷,但可以取任意類(lèi)型的值
        "getArrayItem": getArrayItem,                        // 類(lèi)似于getMapItem格嘁,但是是取一個(gè)切片中指定序號(hào)的值
        "joinList":     tk.JoinList,                         // 類(lèi)似于strJoin,但可以連接任意類(lèi)型的值

        // object related 對(duì)象有關(guān)

        "newObject": tk.NewObject, // 新建一個(gè)對(duì)象廊移,目前支持stack, set(hashset), treeset, list(arraylist), linklist(linkedlist), tree(btree), stringBuffer(stringBuilder), bytesBuffer, error(err), errorString(errStr), string(TXString), StringRing等糕簿,用法:objT = newObject("stack")或objT = newObject("tree", 5)創(chuàng)建五層的btree樹(shù)等
        "newObj":    tk.NewObject, // 等同于newObject

        // error related 錯(cuò)誤處理相關(guān)
        "isError":          tk.IsError,            // 判斷表達(dá)式的值是否為error類(lèi)型
        "isErr":            tk.IsError,            // 等同于isError
        "isErrX":           tk.IsErrX,             // 判斷表達(dá)式的值是否為error類(lèi)型,同時(shí)也判斷是否是TXERROR:開(kāi)始的字符串
        "isErrStr":         tk.IsErrStr,           // 判斷字符串是否是TXERROR:開(kāi)始的字符串
        "checkError":       tk.CheckError,         // 檢查變量狡孔,如果是error則立即停止腳本的執(zhí)行
        "checkErr":         tk.CheckError,         // 等同于checkError
        "checkErrf":        tk.CheckErrf,          // 檢查變量懂诗,如果是error則立即停止腳本的執(zhí)行,之前可以printfln輸出信息
        "checkErrorString": tk.CheckErrorString,   // 檢查變量苗膝,如果是TXERROR:開(kāi)始的字符串則立即停止腳本的執(zhí)行
        "checkErrStr":      tk.CheckErrStr,        // 等同于checkErrorString
        "checkErrStrf":     tk.CheckErrStrf,       // 檢查變量殃恒,如果是TXERROR:開(kāi)始的字符串則立即停止腳本的執(zhí)行,之前可以printfln輸出信息
        "fatalf":           tk.Fatalf,             // printfln輸出信息后終止腳本的執(zhí)行
        "fatalfc":          tk.FatalfByCondition,  // printfln輸出信息后如果第一個(gè)參數(shù)為false辱揭,才終止腳本的執(zhí)行
        "fatalfi":          tk.FatalfByCondition,  // 同fatalfc
        "errStr":           tk.ErrStr,             // 生成TXERROR:開(kāi)始的字符串
        "errStrf":          tk.ErrStrF,            // 生成TXERROR:開(kāi)始的字符串离唐,類(lèi)似sprintf的用法
        "getErrStr":        tk.GetErrStr,          // 從TXERROR:開(kāi)始的字符串獲取其后的錯(cuò)誤信息
        "getErrStrX":       tk.GetErrStrX,         // 從error對(duì)象或TXERROR:開(kāi)始的字符串獲取其中的錯(cuò)誤信息,返回為空字符串一般表示沒(méi)有錯(cuò)誤
        "errf":             tk.Errf,               // 生成error類(lèi)型的變量问窃,其中提示信息類(lèi)似sprintf的用法
        "errToEmptyStr":    tk.ErrorToEmptyString, // 將任意值轉(zhuǎn)為string亥鬓,如果是error類(lèi)型的變量則轉(zhuǎn)為空字符串

        // encode/decode related 編碼/解碼相關(guān)
        "xmlEncode":          tk.EncodeToXMLString,    // 編碼為XML
        "xmlDecode":          tk.FromXMLWithDefault,   // 解碼XML為對(duì)象,函數(shù)定義:(xmlA string, defaultA interface{}) interface{}
        "fromXML":            tk.FromXMLX,             // 解碼XML為etree.Element對(duì)象域庇,函數(shù)定義:fromXML(xmlA string, pathA ...interface{}) interface{}嵌戈,出錯(cuò)時(shí)返回error,否則返回*etree.Element對(duì)象
        "fromXml":            tk.FromXMLX,             // 等同于fromXML
        "toXML":              tk.ToXML,                // 編碼數(shù)據(jù)為XML格式听皿,可選參數(shù)-indent, -cdata, -root=ABC, -rootAttr={"f1", "v1"}, -default="<xml>ab c</xml>"
        "toXml":              tk.ToXML,                // 等同于toXML
        "htmlEncode":         tk.EncodeHTML,           // HTML編碼(&nbsp;等)
        "htmlDecode":         tk.DecodeHTML,           // HTML解碼
        "urlEncode":          tk.UrlEncode2,           // URL編碼(http://www.aaa.com -> http%3A%2F%2Fwww.aaa.com)
        "urlEncodeX":         tk.UrlEncode,            // 增強(qiáng)URL編碼(會(huì)將+和\n等也編碼)
        "urlDecode":          tk.UrlDecode,            // URL解碼
        "base64Encode":       tk.EncodeToBase64,       // Base64編碼熟呛,輸入?yún)?shù)是[]byte字節(jié)數(shù)組
        "toBase64":           tk.ToBase64,             // Base64編碼,輸入?yún)?shù)是[]byte字節(jié)數(shù)組或字符串
        "base64Decode":       tk.DecodeFromBase64,     // base64解碼
        "fromBase64":         tk.DecodeFromBase64,     // 同base64Decode尉姨,base64解碼
        "md5Encode":          tk.MD5Encrypt,           // MD5編碼
        "md5":                tk.MD5Encrypt,           // 等同于md5Encode
        "jsonEncode":         tk.ObjectToJSON,         // JSON編碼
        "jsonDecode":         tk.JSONToObject,         // JSON解碼
        "toJSON":             tk.ToJSONX,              // 增強(qiáng)的JSON編碼庵朝,建議使用,函數(shù)定義: toJSON(objA interface{}, optsA ...string) string又厉,參數(shù)optsA可選九府。例:s = toJSON(textA, "-indent", "-sort")
        "toJson":             tk.ToJSONX,              // 等同于toJSON
        "toJSONX":            tk.ToJSONX,              // 等同于toJSON
        "toJsonX":            tk.ToJSONX,              // 等同于toJSON
        "fromJSON":           tk.FromJSONWithDefault,  // 增強(qiáng)的JSON解碼,函數(shù)定義: fromJSON(jsonA string, defaultA ...interface{}) interface{}
        "fromJson":           tk.FromJSONWithDefault,  // 等同于fromJSON
        "fromJSONX":          fromJSONX,               // 增強(qiáng)的JSON解碼馋没,建議使用昔逗,函數(shù)定義: fromJSON(jsonA string) interface{},如果解碼失敗篷朵,返回error對(duì)象
        "fromJsonX":          fromJSONX,               // 等同于fromJSONX
        "getJSONNode":        tk.GetJSONNode,          // 獲取JSON中的某個(gè)節(jié)點(diǎn)勾怒,未取到則返回nil,示例: getJSONNode("{\"ID\":1,\"Name\":\"Reds\",\"Colors\":[\"Crimson\",\"Red\",\"Ruby\",\"Maroon\"]}", "Colors", 0)
        "getJsonNode":        tk.GetJSONNode,          // 等同于getJSONNode
        "simpleEncode":       tk.EncodeStringCustomEx, // 簡(jiǎn)單編碼声旺,主要為了文件名和網(wǎng)址名不含非法字符
        "simpleDecode":       tk.DecodeStringCustom,   // 簡(jiǎn)單編碼的解碼笔链,主要為了文件名和網(wǎng)址名不含非法字符
        "tableToMSSArray":    tk.TableToMSSArray,      // 參見(jiàn)dbRecsToMapArray,主要用于處理數(shù)據(jù)庫(kù)查詢(xún)結(jié)果
        "tableToMSSMap":      tk.TableToMSSMap,        // 類(lèi)似tableToMSSArray腮猖,但還加上一個(gè)ID作為主鍵成為字典/映射類(lèi)型
        "tableToMSSMapArray": tk.TableToMSSMapArray,   // 類(lèi)似tableToMSSMap鉴扫,但主鍵下的鍵值是一個(gè)數(shù)組,其中每一項(xiàng)是一個(gè)map[string]string

        // encrypt/decrypt related 加密/解密相關(guān)
        "encryptStr":   tk.EncryptStringByTXDEF,            // 加密字符串澈缺,第二個(gè)參數(shù)(可選)是密鑰字串
        "encryptText":  tk.EncryptStringByTXDEF,            // 等同于encryptStr
        "encryptTextX": fnASSVRSe(tk.EncryptStringByTXDEF), // 等同于encryptStr坪创,但錯(cuò)誤時(shí)返回error對(duì)象
        "decryptStr":   tk.DecryptStringByTXDEF,            // 解密字符串炕婶,第二個(gè)參數(shù)(可選)是密鑰字串
        "decryptText":  tk.DecryptStringByTXDEF,            // 等同于decryptStr
        "decryptTextX": fnASSVRSe(tk.DecryptStringByTXDEF), // 等同于decryptStr,但錯(cuò)誤時(shí)返回error對(duì)象
        "encryptData":  tk.EncryptDataByTXDEF,              // 加密二進(jìn)制數(shù)據(jù)([]byte類(lèi)型)莱预,第二個(gè)參數(shù)(可選)是密鑰字串
        "decryptData":  tk.DecryptDataByTXDEF,              // 解密二進(jìn)制數(shù)據(jù)([]byte類(lèi)型)柠掂,第二個(gè)參數(shù)(可選)是密鑰字串

        // log related 日志相關(guān)
        "setLogFile": tk.SetLogFile,         // 設(shè)置日志文件路徑,下面有關(guān)日志的函數(shù)將用到
        "logf":       tk.LogWithTimeCompact, // 輸出到日志文件依沮,函數(shù)定義: func logf(formatA string, argsA ...interface{})
        "logPrint":   logPrint,              // 同時(shí)輸出到標(biāo)準(zhǔn)輸出和日志文件

        // system related 系統(tǒng)相關(guān)
        "getClipText":       tk.GetClipText,                  // 從系統(tǒng)剪貼板獲取文本涯贞,例: textT = getClipText()
        "setClipText":       tk.SetClipText,                  // 設(shè)定系統(tǒng)剪貼板中的文本,例: setClipText("測(cè)試")
        "getEnv":            tk.GetEnv,                       // 獲取系統(tǒng)環(huán)境變量
        "setEnv":            tk.SetEnv,                       // 設(shè)定系統(tǒng)環(huán)境變量
        "systemCmd":         tk.SystemCmd,                    // 執(zhí)行一條系統(tǒng)命令危喉,例如: systemCmd("cmd", "/k", "copy a.txt b.txt")
        "openFile":          tk.RunWinFileWithSystemDefault,  // 用系統(tǒng)默認(rèn)的方式打開(kāi)一個(gè)文件宋渔,例如: openFile("a.jpg")
        "ifFileExists":      tk.IfFileExists,                 // 判斷文件是否存在
        "fileExists":        tk.IfFileExists,                 // 等同于ifFileExists
        "joinPath":          filepath.Join,                   // 連接文件路徑,等同于Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)中的path/filepath.Join
        "getFileSize":       tk.GetFileSizeCompact,           // 獲取文件大小
        "getFileInfo":       tk.GetFileInfo,                  // 獲取文件信息辜限,返回map[string]string
        "getFileList":       tk.GetFileList,                  // 獲取指定目錄下的符合條件的所有文件皇拣,例:listT = getFileList(pathT, "-recursive", "-pattern=*", "-exclusive=*.txt", "-withDir", "-verbose"), -compact 參數(shù)將只給出Abs、Size列粪、IsDir三項(xiàng)
        "getFiles":          tk.GetFileList,                  // 等同于getFileList
        "createFile":        tk.CreateFile,                   // 等同于tk.CreateFile
        "createTempFile":    tk.CreateTempFile,               // 等同于tk.CreateTempFile
        "copyFile":          tk.CopyFile,                     // 等同于tk.CopyFile审磁,可帶參數(shù)-force和-bufferSize=100000
        "removeFile":        tk.RemoveFile,                   // 等同于tk.RemoveFile
        "renameFile":        tk.RenameFile,                   // 等同于tk.RenameFile
        "loadText":          tk.LoadStringFromFile,           // 從文件中讀取文本字符串,函數(shù)定義:func loadText(fileNameA string) string岂座,出錯(cuò)時(shí)返回TXERROR:開(kāi)頭的字符串指明原因
        "loadTextX":         fnASRSE(tk.LoadStringFromFileE), // 從文件中讀取文本字符串态蒂,函數(shù)定義:func loadText(fileNameA string) string,出錯(cuò)時(shí)返回error對(duì)象
        "saveText":          tk.SaveStringToFile,             // 將字符串保存到文件费什,函數(shù)定義: func saveText(strA string, fileA string) string
        "saveTextX":         fnASSRSe(tk.SaveStringToFile),   // 將字符串保存到文件钾恢,如果失敗返回error對(duì)象
        "appendText":        tk.AppendStringToFile,           // 將字符串增加到文件末尾,函數(shù)定義: func appendText(strA string, fileA string) string
        "appendTextX":       fnASSRSe(tk.AppendStringToFile), // 將字符串增加到文件末尾鸳址,如果失敗返回error對(duì)象
        "loadBytes":         tk.LoadBytesFromFile,            // 從文件中讀取二進(jìn)制數(shù)據(jù)瘩蚪,函數(shù)定義:func loadBytes(fileNameA string, numA ...int) interface{},返回[]byte或error稿黍,第二個(gè)參數(shù)沒(méi)有或者小于零的話表示讀取所有
        "loadBytesX":        tk.LoadBytesFromFile,            // 等同于loadBytes
        "saveBytes":         tk.SaveBytesToFileE,             // 將二進(jìn)制數(shù)據(jù)保存到文件疹瘦,函數(shù)定義: func saveBytes(bytesA []byte, fileA string) error
        "saveBytesX":        tk.SaveBytesToFileE,             // 等同于saveBytes
        "sleep":             tk.Sleep,                        // 休眠指定的秒數(shù),例:sleep(30)巡球,可以是小數(shù)
        "sleepSeconds":      tk.SleepSeconds,                 // 基本等同于sleep言沐,但只能是整數(shù)秒
        "sleepMilliSeconds": tk.SleepMilliSeconds,            // 類(lèi)似于sleep,但單位是毫秒
        "sleepMS":           tk.SleepMilliSeconds,            // 等同于sleepMilliSeconds

        // time related 時(shí)間相關(guān)

        "now": time.Now, // 獲取當(dāng)前時(shí)間

        // command-line 命令行處理相關(guān)
        "getParameter":   tk.GetParameterByIndexWithDefaultValue, // 按順序序號(hào)獲取命令行參數(shù)酣栈,其中0代表第一個(gè)參數(shù)险胰,也就是軟件名稱(chēng)或者命令名稱(chēng),1開(kāi)始才是第一個(gè)參數(shù)矿筝,注意參數(shù)不包括開(kāi)關(guān)起便,即類(lèi)似-verbose=true這樣的,函數(shù)定義:func getParameter(argsA []string, idxA int, defaultA string) string
        "getParam":       tk.GetParam,                            // 類(lèi)似于getParameter,只是后兩個(gè)參數(shù)都是可選榆综,默認(rèn)是1和""(空字符串)妙痹,且順序隨意
        "getSwitch":      tk.GetSwitchWithDefaultValue,           // 獲取命令行參數(shù)中的開(kāi)關(guān),用法:tmps = getSwitch(args, "-verbose=", "false")奖年,第三個(gè)參數(shù)是默認(rèn)值(如果在命令行中沒(méi)取到的話返回該值)
        "getIntSwitch":   tk.GetSwitchWithDefaultIntValue,        // 與getSwitch類(lèi)似细诸,但獲取到的是整型(int)的值
        "getFloatSwitch": tk.GetSwitchWithDefaultFloatValue,      // 與getSwitch類(lèi)似,但獲取到的是浮點(diǎn)數(shù)(float64)的值
        "switchExists":   tk.IfSwitchExistsWhole,                 // 判斷命令行參數(shù)中是否存在開(kāi)關(guān)(完整的陋守,),用法:flag = switchExists(args, "-restart")
        "ifSwitchExists": tk.IfSwitchExistsWhole,                 // 等同于switchExists
        "parseCommand":   tk.ParseCommandLine,                    // 等同于tk.ParseCommandLine

        // network related 網(wǎng)絡(luò)相關(guān)
        "newSSHClient": tk.NewSSHClient, // 新建一個(gè)SSH連接利赋,以便執(zhí)行各種SSH操作水评,例:
        // clientT, errT = newSSHClient(hostName, port, userName, password)
        // defer clientT.Close() // 別忘了用完關(guān)閉網(wǎng)絡(luò)連接

        // outT, errT = clientT.Run(`ls -p; cat abc.txt`) // 執(zhí)行一條或多條命令
        // errT = clientT.Upload(`./abc.txt`, strReplace(joinPath(pathT, `abc.txt`), `\`, "/")) // 上傳文件
        // errT = clientT.Download(`down.txt`, `./down.txt`) // 下載文件
        // bytesT, errT = clientT.GetFileContent(`/root/test/down.txt`) // 獲取某個(gè)文件的二進(jìn)制內(nèi)容[]byte
        "mapToPostData": tk.MapToPostData,    // 從一個(gè)映射(map)對(duì)象生成進(jìn)行POST請(qǐng)求的參數(shù)對(duì)象,函數(shù)定義func mapToPostData(postDataA map[string]string) url.Values
        "getWebPage":    tk.DownloadPageUTF8, // 進(jìn)行一個(gè)網(wǎng)絡(luò)HTTP請(qǐng)求并獲得服務(wù)器返回結(jié)果媚送,或者下載一個(gè)網(wǎng)頁(yè)中燥,函數(shù)定義func getWebPage(urlA string, postDataA url.Values, customHeaders string, timeoutSecsA time.Duration, optsA ...string) string
        // customHeadersA 是自定義請(qǐng)求頭,內(nèi)容是多行文本形如 charset: utf-8塘偎。如果冒號(hào)后還有冒號(hào)疗涉,要替換成`
        // 返回結(jié)果是TXERROR字符串,即如果是以TXERROR:開(kāi)頭吟秩,則表示錯(cuò)誤信息咱扣,否則是網(wǎng)頁(yè)或請(qǐng)求響應(yīng)
        "getWeb": tk.DownloadWebPageX, // 進(jìn)行一個(gè)網(wǎng)絡(luò)HTTP請(qǐng)求并獲得服務(wù)器返回結(jié)果,或者下載一個(gè)網(wǎng)頁(yè)涵防,函數(shù)定義func getWebPage(urlA string, postDataA map[string]string, optsA ...string) string
        // 除了urlA闹伪,所有參數(shù)都是可選;
        // optsA支持-verbose壮池, -detail偏瓤, -timeout=30(秒),-encoding=utf-8/gb2312/gbk/gb18030等,
        // 如果要添加FORM形式的POST的數(shù)據(jù)椰憋,則直接傳入一個(gè)url.Values類(lèi)型的數(shù)據(jù)厅克,或者map[string]string或者map[string]interface{}的參數(shù)即可,也可以用開(kāi)關(guān)參數(shù)-post={"Key1": "Value1", "Key2": "Value2"}這樣傳入JSON橙依,此時(shí)請(qǐng)求將自動(dòng)轉(zhuǎn)為POST方式(默認(rèn)是GET方式)
        // 如果要直接POST數(shù)據(jù)证舟,則直接傳入-postBody=ABCDEFG這樣的信息即可,其中ABCDEFG是所需POST的字符串票编,例如getWeb("http://abc.com:8001/sap/bc/srt/rfc/sap/getSvc", "-postBody=<XML><data1>Test</data1></XML>", `-headers={"Content-Type":"text/xml; charset=utf-8", "SOAPAction":""}`, "-timeout=15")褪储,此時(shí)請(qǐng)求將自動(dòng)轉(zhuǎn)為POST方式(默認(rèn)是GET方式),另外也可以直接傳入一個(gè)[]byte類(lèi)型的參數(shù)
        // 如需添加自定義請(qǐng)求頭慧域,則添加開(kāi)關(guān)參數(shù)類(lèi)似:-headers={"content-type": "text/plain; charset=utf-8;"}
        // 返回結(jié)果是TXERROR字符串鲤竹,即如果是以TXERROR:開(kāi)頭,則表示錯(cuò)誤信息,否則是網(wǎng)頁(yè)或請(qǐng)求響應(yīng)
        "downloadFile": tk.DownloadFile, // 從網(wǎng)絡(luò)下載一個(gè)文件辛藻,函數(shù)定義func downloadFile(urlA, dirA, fileNameA string, argsA ...string) string
        "httpRequest":  tk.RequestX,     // 進(jìn)行一個(gè)網(wǎng)絡(luò)HTTP請(qǐng)求并獲得服務(wù)器返回結(jié)果碘橘,函數(shù)定義func httpRequest(urlA, methodA, reqBodyA string, customHeadersA string, timeoutSecsA time.Duration, optsA ...string) (string, error)
        // 其中methodA可以是"GET","POST"等
        // customHeadersA 是自定義請(qǐng)求頭吱肌,內(nèi)容是多行文本形如 charset: utf-8痘拆。如果冒號(hào)后還有冒號(hào),要替換成`
        "postRequest": tk.PostRequestX, // 進(jìn)行一個(gè)POST網(wǎng)絡(luò)請(qǐng)求并獲得服務(wù)器返回結(jié)果氮墨,函數(shù)定義func postRequest(urlA, reqBodyA string, customHeadersA string, timeoutSecsA time.Duration, optsA ...string) (string, error)
        // 其中reqBodyA是POST的body
        // customHeadersA 是自定義請(qǐng)求頭纺蛆,內(nèi)容是多行文本形如 charset: utf-8。如果冒號(hào)后還有冒號(hào)规揪,要替換成`
        // timeoutSecsA是請(qǐng)求超時(shí)的秒數(shù)
        // optsA是一組字符串桥氏,可以是-verbose和-detail,均表示是否輸出某些信息
        "getFormValue":         tk.GetFormValueWithDefaultValue,  // 從HTTP請(qǐng)求中獲取字段參數(shù)猛铅,可以是Query參數(shù)字支,也可以是POST參數(shù),函數(shù)定義func getFormValue(reqA *http.Request, keyA string, defaultA string) string
        "formValueExist":       tk.IfFormValueExists,             // 判斷HTTP請(qǐng)求中的是否有某個(gè)字段參數(shù)奸忽,函數(shù)定義func formValueExist(reqA *http.Request, keyA string) bool
        "ifFormValueExist":     tk.IfFormValueExists,             // 等同于formValueExist
        "formToMap":            tk.FormToMap,                     // 將HTTP請(qǐng)求中的form內(nèi)容轉(zhuǎn)換為map(字典/映射類(lèi)型)堕伪,例:mapT = formToMap(req.Form)
        "generateJSONResponse": tk.GenerateJSONPResponseWithMore, // 生成Web API服務(wù)器的JSON響應(yīng),支持JSONP栗菜,例:return generateJSONResponse("fail", sprintf("數(shù)據(jù)庫(kù)操作失斍反啤:%v", errT), req)
        "genResp":              tk.GenerateJSONPResponseWithMore, // 等同于generateJSONResponse
        "writeResp":            tk.WriteResponse,                 // 寫(xiě)http輸出,函數(shù)原型writeResp(resA http.ResponseWriter, strA string) error
        "writeRespHeader":      tk.WriteResponseHeader,           // 寫(xiě)http響應(yīng)頭的狀態(tài)(200苛萎、404等)桨昙,函數(shù)原型writeRespHeader(resA http.ResponseWriter, argsA ...interface{}) error,例:writeRespHeader(http.StatusOK)
        "setRespHeader":        tk.SetResponseHeader,             // 設(shè)置http響應(yīng)頭中的內(nèi)容腌歉,函數(shù)原型setRespHeader(resA http.ResponseWriter, keyA string, valueA string) error蛙酪,例:setRespHeader(responseG, "Content-Type", "text/json; charset=utf-8")
        "jsonRespToHtml":       tk.JSONResponseToHTML,            // 類(lèi)似{"Status":"fail", "Value":"failed to connect DB"}的JSON響應(yīng)轉(zhuǎn)換為通用的簡(jiǎn)單的錯(cuò)誤網(wǎng)頁(yè)

        "replaceHtmlByMap":      tk.ReplaceHtmlByMap,
        "cleanHtmlPlaceholders": tk.CleanHtmlPlaceholders,

        // database related
        "dbConnect": sqltk.ConnectDBX, // 連接數(shù)據(jù)庫(kù)以便后續(xù)讀寫(xiě)操作,例:
        // dbT = dbConnect("sqlserver", "server=127.0.0.1;port=1443;portNumber=1443;user id=user;password=userpass;database=db1")
        //  if isError(dbT) {
        //      fatalf("打開(kāi)數(shù)據(jù)庫(kù)%v錯(cuò)誤:%v", dbT)
        //  }
        // }
        // defer dbT.Close()

        "dbClose": sqltk.CloseDBX, // 關(guān)閉數(shù)據(jù)庫(kù)連接翘盖,例:
        // errT := dbClose(dbT)
        //  if isError(rs) {
        //      fatalf("關(guān)閉數(shù)據(jù)庫(kù)時(shí)發(fā)生錯(cuò)誤:%v", rs)
        //  }
        // }

        "dbExec": sqltk.ExecDBX, // 進(jìn)行數(shù)據(jù)庫(kù)操作桂塞,例:
        // rs := dbExec(dbT, `insert into table1 (field1,id,field2) values('value1',1,'value2')`
        //  if isError(rs) {
        //      fatalf("新增數(shù)據(jù)庫(kù)記錄時(shí)發(fā)生錯(cuò)誤:%v", rs)
        //  }
        // }
        // insertID, affectedRows = rs[0], rs[1]

        "dbQuery": sqltk.QueryDBX, // 進(jìn)行數(shù)據(jù)庫(kù)查詢(xún),所有字段結(jié)果都將轉(zhuǎn)換為字符串馍驯,返回結(jié)果為[]map[string]string阁危,用JSON格式表達(dá)類(lèi)似:[{"Field1": "Value1", "Field2": "Value2"},{"Field1": "Value1a", "Field2": "Value2a"}],例:
        // sqlRsT = dbQuery(dbT, `SELECT * FROM TABLE1 WHERE ID=3`)
        // if isError(sqlRsT) {
        //      fatalf("查詢(xún)數(shù)據(jù)庫(kù)錯(cuò)誤:%v", dbT)
        //  }
        // pl("在數(shù)據(jù)庫(kù)中找到%v條記錄", len(sqlRsT))

        "dbQueryRecs": sqltk.QueryDBRecsX, // 進(jìn)行數(shù)據(jù)庫(kù)查詢(xún)汰瘫,所有字段結(jié)果都將轉(zhuǎn)換為字符串狂打,返回結(jié)果為[][]string,即二維數(shù)組混弥,其中第一行為表頭字段名:[["Field1", "Field2"],["Value1","Value2"]]趴乡,例:
        // sqlRsT = dbQueryRecs(dbT, `SELECT * FROM TABLE1 WHERE ID=3`)
        // if isErr(sqlRsT) {
        //      fatalf("查詢(xún)數(shù)據(jù)庫(kù)錯(cuò)誤:%v", sqlRsT)
        //  }
        // pl("在數(shù)據(jù)庫(kù)中找到%v條記錄", len(sqlRsT))

        "dbQueryMap": sqltk.QueryDBMapX, // 進(jìn)行數(shù)據(jù)庫(kù)查詢(xún),所有字段結(jié)果都將轉(zhuǎn)換為字符串,返回結(jié)果為map[string]map[string]string晾捏,即將dbQuery的結(jié)果再加上一個(gè)索引蒿涎,例:{"Value1": {"Field1": "Value1"}, "Value2": {"Field2": "Value2"}}
        // sqlRsT = dbQueryMap(dbT, `SELECT * FROM TABLE1 WHERE ID=3`, "ID")
        // if isErr(sqlRsT) {
        //      fatalf("查詢(xún)數(shù)據(jù)庫(kù)錯(cuò)誤:%v", sqlRsT)
        //  }
        // pl("在數(shù)據(jù)庫(kù)中找到結(jié)果:%v", sqlRsT)

        "dbQueryMapArray": sqltk.QueryDBMapArrayX, // 進(jìn)行數(shù)據(jù)庫(kù)查詢(xún),所有字段結(jié)果都將轉(zhuǎn)換為字符串惦辛,返回結(jié)果為map[string][]map[string]string劳秋,即將dbQueryMap的結(jié)果中,每一個(gè)鍵值中可以是一個(gè)數(shù)組([]map[string]string類(lèi)型)胖齐,例:{"Value1": [{"Field1": "Value1"}, {"Field1": "Value1a"}], "Value2": [{"Field1": "Value2"}, {"Field1": "Value2a"}, {"Field1": "Value2b"}]}
        // sqlRsT = dbQueryMapArray(dbT, `SELECT * FROM TABLE1 WHERE ID=3`, "ID")
        // if isErr(sqlRsT) {
        //      fatalf("查詢(xún)數(shù)據(jù)庫(kù)錯(cuò)誤:%v", sqlRsT)
        //  }
        // pl("在數(shù)據(jù)庫(kù)中找到結(jié)果:%v", sqlRsT)

        "dbQueryCount": sqltk.QueryCountX, // 與dbQuery類(lèi)似玻淑,但主要進(jìn)行數(shù)量查詢(xún),也支持結(jié)果只有一個(gè)整數(shù)的查詢(xún)呀伙,例:
        // sqlRsT = dbQueryCount(dbT, `SELECT COUNT(*) FROM TABLE1 WHERE ID>3`)
        // if isError(sqlRsT) {
        //      fatalf("查詢(xún)數(shù)據(jù)庫(kù)錯(cuò)誤:%v", dbT)
        //  }
        // pl("在數(shù)據(jù)庫(kù)中共有符合條件的%v條記錄", sqlRsT)

        "dbQueryFloat": sqltk.QueryFloatX, // 與dbQueryCount類(lèi)似岁忘,但主要進(jìn)行返回一個(gè)浮點(diǎn)數(shù)結(jié)果的查詢(xún),例:
        // sqlRsT = dbQueryFloat(dbT, `SELECT PRICE FROM TABLE1 WHERE ID=3`)
        // if isError(sqlRsT) {
        //      fatalf("查詢(xún)數(shù)據(jù)庫(kù)錯(cuò)誤:%v", dbT)
        //  }
        // pl("查詢(xún)結(jié)果為%v", sqlRsT)

        "dbQueryString": sqltk.QueryStringX, // 與dbQueryCount類(lèi)似区匠,但主要支持結(jié)果只有一個(gè)字符串的查詢(xún)

        "dbFormat":       sqltk.FormatSQLValue, // 將字符串轉(zhuǎn)換為可用在SQL語(yǔ)句中的字符串(將單引號(hào)變成雙單引號(hào))
        "formatSQLValue": sqltk.FormatSQLValue, // 將字符串轉(zhuǎn)換為可用在SQL語(yǔ)句中的字符串(將單引號(hào)變成雙單引號(hào))

        "dbOneLineRecordToMap": sqltk.OneLineRecordToMap, // 將只有一行(加標(biāo)題行兩行)的SQL語(yǔ)句查詢(xún)結(jié)果([][]string格式)變?yōu)轭?lèi)似{"Field1": "Value1", "Field2": "Value2"}的map[string]string格式

        "dbOneColumnRecordsToArray": sqltk.OneColumnRecordsToArray, // 將只有一列的SQL語(yǔ)句查詢(xún)結(jié)果([][]string格式)變?yōu)轭?lèi)似["Value1", "Value2"]的[]string格式

        "dbRecsToMapArray": sqltk.RecordsToMapArray, // 將多行行(第一行為標(biāo)頭字段行)的SQL語(yǔ)句查詢(xún)結(jié)果([][]string格式)變?yōu)轭?lèi)似[{"Field1": "Value1", "Field2": "Value2"},{"Field1": "Value1a", "Field2": "Value2a"}]的[]map[string]string格式

        "dbRecsToMapArrayMap": sqltk.RecordsToMapArrayMap, // 將多行行(第一行為標(biāo)頭字段行)的SQL語(yǔ)句查詢(xún)結(jié)果([][]string格式)變?yōu)轭?lèi)似dbQueryMapArray函數(shù)返回的結(jié)果

        // line editor related 內(nèi)置行文本編輯器有關(guān)
        "leClear":       leClear,         // 清空行文本編輯器緩沖區(qū),例:leClear()
        "leLoadStr":     leLoadString,    // 行文本編輯器緩沖區(qū)載入指定字符串內(nèi)容帅腌,例:leLoadStr("abc\nbbb\n結(jié)束")
        "leSetAll":      leLoadString,    // 等同于leLoadString
        "leSaveStr":     leSaveString,    // 取出行文本編輯器緩沖區(qū)中內(nèi)容驰弄,例:s = leSaveStr()
        "leGetAll":      leSaveString,    // 等同于leSaveStr
        "leLoad":        leLoadFile,      // 從文件中載入文本到行文本編輯器緩沖區(qū)中,例:err = leLoad(`c:\test.txt`)
        "leLoadFile":    leLoadFile,      // 等同于leLoad
        "leSave":        leSaveFile,      // 將行文本編輯器緩沖區(qū)中內(nèi)容保存到文件中速客,例:err = leSave(`c:\test.txt`)
        "leSaveFile":    leSaveFile,      // 等同于leSave
        "leLoadClip":    leLoadClip,      // 從剪貼板中載入文本到行文本編輯器緩沖區(qū)中戚篙,例:err = leLoadClip()
        "leSaveClip":    leSaveClip,      // 將行文本編輯器緩沖區(qū)中內(nèi)容保存到剪貼板中,例:err = leSaveClip()
        "leLoadUrl":     leLoadUrl,       // 從網(wǎng)址URL載入文本到行文本編輯器緩沖區(qū)中溺职,例:err = leLoadUrl(`http://example.com/abc.txt`)
        "leInsert":      leInsertLine,    // 行文本編輯器緩沖區(qū)中的指定位置前插入指定內(nèi)容岔擂,例:err = leInsert(3, "abc")
        "leInsertLine":  leInsertLine,    // 等同于leInsert
        "leAppend":      leAppendLine,    // 行文本編輯器緩沖區(qū)中的最后追加指定內(nèi)容浪耘,例:err = leAppendLine("abc")
        "leAppendLine":  leAppendLine,    // 等同于leAppend
        "leSet":         leSetLine,       // 設(shè)定行文本編輯器緩沖區(qū)中的指定行為指定內(nèi)容乱灵,例:err = leSet(3, "abc")
        "leSetLine":     leSetLine,       // 等同于leSet
        "leSetLines":    leSetLines,      // 設(shè)定行文本編輯器緩沖區(qū)中指定范圍的多行為指定內(nèi)容七冲,例:err = leSetLines(3, 5痛倚, "abc\nbbb")
        "leRemove":      leRemoveLine,    // 刪除行文本編輯器緩沖區(qū)中的指定行,例:err = leRemove(3)
        "leRemoveLine":  leRemoveLine,    // 等同于leRemove
        "leRemoveLines": leRemoveLines,   // 刪除行文本編輯器緩沖區(qū)中指定范圍的多行澜躺,例:err = leRemoveLines(1, 3)
        "leViewAll":     leViewAll,       // 查看行文本編輯器緩沖區(qū)中的所有內(nèi)容蝉稳,例:allText = leViewAll()
        "leView":        leViewLine,      // 查看行文本編輯器緩沖區(qū)中的指定行,例:lineText = leView(18)
        "leSort":        leSort,          // 將行文本編輯器緩沖區(qū)中的行進(jìn)行排序掘鄙,唯一參數(shù)表示是否降序排序耘戚,例:errT = leSort(true)
        "leEnc":         leConvertToUTF8, // 將行文本編輯器緩沖區(qū)中的文本轉(zhuǎn)換為UTF-8編碼,如果不指定原始編碼則默認(rèn)為GB18030編碼
        "leLineEnd":     leLineEnd,       // 讀取或設(shè)置行文本編輯器緩沖區(qū)中行末字符(一般是\n或\r\n)操漠,不帶參數(shù)是獲取收津,帶參數(shù)是設(shè)置
        "leSilent":      leSilent,        // 讀取或設(shè)置行文本編輯器的靜默模式(布爾值),不帶參數(shù)是獲取,帶參數(shù)是設(shè)置

        // GUI related start
        // gui related 圖形界面相關(guān)
        "initGUI":             initGUI,             // GUI操作朋截,一般均需調(diào)用initGUI來(lái)進(jìn)行初始化蛹稍,例:initGUI()
        "getConfirmGUI":       getConfirmGUI,       // 顯示一個(gè)提示信息并讓用戶確認(rèn)的對(duì)話框,例:getConfirmGUI("對(duì)話框標(biāo)題", "信息內(nèi)容")部服,注意唆姐,從第二個(gè)參數(shù)開(kāi)始可以類(lèi)似于printf那樣帶格式化字符串和任意長(zhǎng)度參數(shù)值,例如getConfirmGUI("對(duì)話框標(biāo)題", "信息內(nèi)容=%v", abc)
        "getInputGUI":         getInputGUI,         // 顯示一個(gè)提示信息并讓用戶輸入信息的對(duì)話框廓八,例:getInputGUI("請(qǐng)輸入……", "姓名")奉芦,注意,從第3個(gè)參數(shù)開(kāi)始為可選參數(shù)剧蹂,可以有-ok=確認(rèn)按鈕標(biāo)題声功,-cancel=取消按鈕標(biāo)題,分別表示確認(rèn)按鈕與取消按鈕的標(biāo)題(默認(rèn)分別為OK和Cancel)宠叼,例如getInputGUI("對(duì)話框標(biāo)題", "信息內(nèi)容", "-ok=確定", "-cancel=關(guān)閉")先巴,返回輸入字符串,如果按了取消按鈕冒冬,將返回TXERROR:開(kāi)始的空字符串
        "getPasswordGUI":      getPasswordGUI,      // 顯示一個(gè)提示信息并讓用戶輸入密碼/口令的對(duì)話框伸蚯,例:getPasswordGUI("請(qǐng)輸入……", "密碼"),注意简烤,從第3個(gè)參數(shù)開(kāi)始為可選參數(shù)剂邮,可以有-ok=確認(rèn)按鈕標(biāo)題,-cancel=取消按鈕標(biāo)題横侦,分別表示確認(rèn)按鈕與取消按鈕的標(biāo)題(默認(rèn)分別為OK和Cancel)挥萌,例如getPasswordGUI("對(duì)話框標(biāo)題", "信息內(nèi)容", "-ok=確定", "-cancel=關(guān)閉")
        "getListItemGUI":      getListItemGUI,      // 提供單選列表供用戶選擇,結(jié)果格式是選中的字符串或者TXERROR字符串枉侧;示例:getListItemGUI("請(qǐng)選擇", "所需的顏色", ["紅色","黃色"]...)
        "getListItemsGUI":     getListItemsGUI,     // 提供多選列表供用戶選擇引瀑,結(jié)果格式是選中的字符串?dāng)?shù)組或者TXERROR字符串;示例:getListItemGUI("請(qǐng)選擇", "所需的顏色", ["紅色","黃色","藍(lán)色"]...)
        "getColorGUI":         getColorGUI,         // 獲取用戶選擇的顏色棵逊,結(jié)果格式是FFEEDD或者TXERROR字符串伤疙;示例:getColorGUI("請(qǐng)選擇顏色", "CCCCCC")
        "getDateGUI":          getDateGUI,          // 獲取用戶選擇的日期,結(jié)果格式是20210218或者TXERROR字符串辆影;示例:getDateGUI("請(qǐng)選擇……", "開(kāi)始日期")徒像,注意,從第二個(gè)參數(shù)開(kāi)始可以類(lèi)似于printf那樣帶格式化字符串和任意長(zhǎng)度參數(shù)值蛙讥,例如getPasswordGUI("對(duì)話框標(biāo)題", "信息內(nèi)容=%v", abc)
        "showInfoGUI":         showInfoGUI,         // 顯示一個(gè)提示信息的對(duì)話框锯蛀,例:showInfoGUI("對(duì)話框標(biāo)題", "信息內(nèi)容"),注意次慢,從第二個(gè)參數(shù)開(kāi)始可以類(lèi)似于printf那樣帶格式化字符串和任意長(zhǎng)度參數(shù)值旁涤,例如showInfoGUI("對(duì)話框標(biāo)題", "信息內(nèi)容=%v", abc)
        "showErrorGUI":        showErrorGUI,        // 顯示一個(gè)錯(cuò)誤或警告信息的對(duì)話框翔曲,例:showErrorGUI("對(duì)話框標(biāo)題", "錯(cuò)誤或警告內(nèi)容"),注意劈愚,從第二個(gè)參數(shù)開(kāi)始可以類(lèi)似于printf那樣帶格式化字符串和任意長(zhǎng)度參數(shù)值瞳遍,例如showErrorGUI("對(duì)話框標(biāo)題", "信息內(nèi)容=%v", abc)
        "selectFileToSaveGUI": selectFileToSaveGUI, // 圖形化選取用于保存數(shù)據(jù)的文件,例:fileName = selectFileToSaveGUI("-title=請(qǐng)選擇文件……", "-filterName=所有文件", "-filter=*", "-start=.")菌羽,參數(shù)均為可選掠械,start是默認(rèn)起始目錄
        "selectFileGUI":       selectFileGUI,       // 圖形化選取文件,例:fileName = selectFileGUI("-title=請(qǐng)選擇文件……", "-filterName=所有文件", "-filter=*", "-start=.")注祖,參數(shù)均為可選猾蒂,start是默認(rèn)起始目錄
        "selectDirectoryGUI":  selectDirectoryGUI,  // 圖形化選取目錄,例:dirName = selectDirectoryGUI("-title=請(qǐng)選擇目錄……", "-start=.")是晨,參數(shù)均為可選肚菠,start是默認(rèn)起始目錄

        // GUI related end

        // misc 雜項(xiàng)函數(shù)
        "sortX":            tk.SortX,                        // 排序各種數(shù)據(jù),用法:sort([{"f1": 1}, {"f1": 2}], "-key=f1", "-desc")
        "newFunc":          NewFuncB,                        // 將Gox語(yǔ)言中的定義的函數(shù)轉(zhuǎn)換為Go語(yǔ)言中類(lèi)似 func f() 的形式
        "newFuncIIE":       NewFuncInterfaceInterfaceErrorB, // 將Gox語(yǔ)言中的定義的函數(shù)轉(zhuǎn)換為Go語(yǔ)言中類(lèi)似 func f(a interface{}) (interface{}, error) 的形式
        "newFuncSSE":       NewFuncStringStringErrorB,       // 將Gox語(yǔ)言中的定義的函數(shù)轉(zhuǎn)換為Go語(yǔ)言中類(lèi)似 func f(a string) (string, error) 的形式
        "newFuncSS":        NewFuncStringStringB,            // 將Gox語(yǔ)言中的定義的函數(shù)轉(zhuǎn)換為Go語(yǔ)言中類(lèi)似 func f(a string) string 的形式
        "newCharFunc":      newCharFunc,                     // 將Gox語(yǔ)言中的定義的函數(shù)轉(zhuǎn)換為Charlang語(yǔ)言中類(lèi)似 func f() 的形式
        "newStringRing":    tk.NewStringRing,                // 創(chuàng)建一個(gè)字符串環(huán)罩缴,大小固定蚊逢,后進(jìn)的會(huì)將先進(jìn)的最后一個(gè)頂出來(lái)
        "getCfgStr":        getCfgString,                    // 從根目錄(Windows下為C:\,*nix下為/)的gox子目錄中獲取文件名為參數(shù)1的配置項(xiàng)字符串
        "setCfgStr":        setCfgString,                    // 向根目錄(Windows下為C:\箫章,*nix下為/)的gox子目錄中寫(xiě)入文件名為參數(shù)1时捌,內(nèi)容為參數(shù)2的配置項(xiàng)字符串,例:saveCfgStr("timeout", "30")
        "genQR":            tk.GenerateQR,                   // 生成二維碼炉抒,例:genQR("http://www.example.com", "-level=2"), level 0..3,越高容錯(cuò)性越好稚叹,但越大
        "newChar":          charlang.NewChar,                // new a charlang script VM
        "runChar":          charlang.RunChar,                // run a charlang script VM
        "runCharCode":      charlang.RunCharCode,            // run a charlang script
        "runXie":           xie.RunCode,                     // run a xielang script
        "quickCompileChar": charlang.QuickCompile,           // compile a charlang script VM
        "quickRunChar":     charlang.QuickRun,               // run a charlang script VM
        "newCharAny":       charlang.NewAny,                 // create a interface{} pointer in charlang
        "newCharAnyValue":  charlang.NewAnyValue,            // create a interface{} value in charlang
        "toCharValue":      charlang.ConvertToObject,        // convert to a interface{} value in charlang
        "wrapError":        tk.WrapError,                    //
        "renderMarkdown":   tk.RenderMarkdown,               // 將Markdown格式字符串渲染為HTML

        "genToken":   tk.GenerateToken, // 生成令牌焰薄,用法:genToken("appCode", "userID", "userRole", "-secret=abc")
        "checkToken": tk.CheckToken,    // 檢查令牌,如果成功扒袖,返回類(lèi)似“appCode|userID|userRole|”的字符串塞茅;失敗返回TXERROR字符串

        // global variables 全局變量
        "timeFormatG":        tk.TimeFormat,        // 用于時(shí)間處理時(shí)的時(shí)間格式,值為"2006-01-02 15:04:05"
        "timeFormatCompactG": tk.TimeFormatCompact, // 用于時(shí)間處理時(shí)的簡(jiǎn)化時(shí)間格式季率,值為"20060102150405"

        "getSystemEndian": tk.GetSystemEndian, // 獲取系統(tǒng)的字節(jié)順序野瘦,返回binary.BigEndian或binary.LittleEndian
        "getStack":        getStack,           // 獲取堆棧
        "getVars":         getVars,            // 獲取當(dāng)前變量表

        "scriptPathG": scriptPathG, // 所執(zhí)行腳本的路徑
        "versionG":    versionG,    // Gox/Goxc的版本號(hào)
        "leBufG":      leBufG,      // 內(nèi)置行文本編輯器所用的編輯緩沖區(qū)

以及

imisc包,用于生成純Go語(yǔ)言的函數(shù)變量

        "NewFunc":                         NewFunc,
        "NewFuncError":                    NewFuncError,
        "NewFuncInterface":                NewFuncInterface,
        "NewFuncInterfaceError":           NewFuncInterfaceError,
        "NewFuncInterfaceInterfaceError":  NewFuncInterfaceInterfaceError,
        "NewFuncInterfaceInterfaceErrorB": NewFuncInterfaceInterfaceErrorB,
        "NewFuncIntString":                NewFuncIntString,
        "NewFuncIntError":                 NewFuncIntError,
        "NewFuncFloatString":              NewFuncFloatString,
        "NewFuncFloatStringError":         NewFuncFloatStringError,
        "NewFuncStringString":             NewFuncStringString,
        "NewFuncStringError":              NewFuncStringError,
        "NewFuncStringStringError":        NewFuncStringStringError,
        "NewFuncStringStringErrorB":       NewFuncStringStringErrorB,
        "NewFuncIntStringError":           NewFuncIntStringError,

例如飒泻,如果需要一個(gè)純Go語(yǔ)言的函數(shù)(有時(shí)候一些包中需要傳遞函數(shù)參數(shù))鞭光,類(lèi)似 func myprint(a string) (string, error),那么可以這樣

func myprint(a) {
    pl("%v", a)
    return "", errf("")
}

myprintv = imisc.NewFuncStringStringError(^myprint)

w.Bind("myprint", *myprintv)

其中泞遗,w.Bind函數(shù)就需要一個(gè)func (a string) (string, error)類(lèi)型的函數(shù)作為參數(shù)傳入惰许。




輸出相關(guān)

  • printfln或pl

相當(dāng)于printf函數(shù)并且會(huì)在最后多輸出一個(gè)回車(chē)換行符。


  • println或pln

相當(dāng)于其他語(yǔ)言中的println函數(shù)史辙。


  • print

相當(dāng)于其他語(yǔ)言中的print函數(shù)汹买。


  • printf

相當(dāng)于其他語(yǔ)言中的printf函數(shù)佩伤。


  • pv

pv函數(shù)可以查看變量的名稱(chēng)、類(lèi)型和值晦毙,在調(diào)試代碼的時(shí)候比較方便生巡,但注意函數(shù)的參數(shù)要求傳入變量名稱(chēng),是個(gè)字符串见妒,要加雙引號(hào)孤荣。


  • plv

plv(v)相當(dāng)于printfln("%#v", v)。


  • plerr

plerr函數(shù)用于輸出一個(gè)error類(lèi)型的值的信息徐鹤。


  • type或typeOf

用于獲得一個(gè)變量或數(shù)值的類(lèi)型垃环。


  • eval

計(jì)算一個(gè)表達(dá)式的值。


  • exit

退出整個(gè)程序的運(yùn)行返敬。


  • checkError

檢查一個(gè)error變量是否是非nil值遂庄,如果不是nil,則輸出error的信息并退出程序劲赠。


  • checkErrorString

檢查一個(gè)字符串是否是表示錯(cuò)誤的字符串(以TXERROR:開(kāi)頭)涛目,如果是,則輸出提示信息并退出程序凛澎。


  • setValue

設(shè)置一個(gè)指針變量指向的值霹肝。


  • getValue

獲取一個(gè)指針變量指向的值。


  • bitXor

按位異或(bitwise XOR)塑煎。


  • remove

從數(shù)組中刪除從起始索引到結(jié)束索引的所有數(shù)值項(xiàng)沫换,例如 a = remove(a, 1, 3)。


  • setVar

設(shè)置一個(gè)門(mén)戶全局變量最铁,用于與其他腳本共享數(shù)據(jù)讯赏。


  • getVar

獲取一個(gè)門(mén)戶全局變量的值,用于獲取其他腳本共享的數(shù)據(jù)冷尉。


  • getInput

等待并獲取用戶命令行輸入漱挎。


  • getInputf

等待并獲取用戶命令行輸入,并在之前用類(lèi)似printf的方式給出提示信息雀哨。


  • run

執(zhí)行一個(gè)文件中的腳本磕谅。


  • edit

調(diào)用內(nèi)置代碼編輯器編輯腳本。


  • newSSHClient

新建一個(gè)SSH連接雾棺,以便執(zhí)行各種SSH操作膊夹。


  • runScript

運(yùn)行一個(gè)腳本。


  • getClipText

獲取剪貼板文本捌浩。


  • setClipText

設(shè)置剪貼板文本割疾。


最新的內(nèi)置函數(shù)說(shuō)明請(qǐng)參考下面的英文文檔或這里

Variables

argsG

get global variable

The global value "argsG" could be used for retrieve command-line arguments, and the first element(the Gox executable) is usually removed. If you need the whole command-line, use os.Args instead.


scriptPathG

holds the full script path(include the file name), for network scenes, will be ""(empty string)

Functions

Note: some functions may exist or not in different script engine, and may have some slight differences.


pass

A function doing nothing. Usually used at the end of a script to ensure return nothing(so that will print nothing by the VM).


defined

check if a variable is defined


eval

evaluate an expression and return the result


typeof/typeOf/kindOf

return the string representation of the type for a variable or expression

a = 1
println(typeof(a))


remove

remove one or several items from an array

remove(arrayA, startIndexA, endIndexA)

print/pr

the same as fmt.Print


println/pln

the same as fmt.Println


printf/prf

the same as fmt.Printf


printfln/pl

the same as fmt.Printf but add a new-line character at the end


sprintf

the same as fmt.Sprintf


fprintln/fprintf

the same as fmt.Fprintln/fmt.Fprintf


plv

the same as pl("%#v", v)


pv

output the name, type, value of a variable, attention: the parameter passed to this function should be a string, and only the global varibles are allowed.

s2 = "abcabcabc"

pv("s2")

// the output ->
// s2(string): abcabcabc

plvsr

the same as pl("%#v", v), but for various arguments


plerr

a convenient way to print an error value


exit

the same as os.Exit(1), used to terminate\exit the whole script running


setValue

assign a value by a pointer, used in Qlang engine.

s = new(string)

// *s = "abc" is not correct in Qlang engine

setValue(s, "abc")

println(*s)  // use * for dereference a value from pointer is allowed


getValue

get a value referenced by a pointer, used in Qlang engine.

s = new(string)

// *s = "abc" is not correct in Qlang engine

setValue(s, "abc")

println(*s)  // use * for dereference a value from pointer is allowed

v = getValue(s)

println(v) // will be "abc"


setVar

set global variable


getVar

get global variable


bitXor

bitwise XOR operation, since in Qlang engine, ^ is used for get address/pointer of a variable(like & in other engine),
so the origin bitwise XOR operator in Golang is used and we will use bitXor function instead.


checkError

a convenient way to print an error value if not nil, and terminate the whole program running

outT, errT = clientT.Run(cmdT)

checkError(errT, deferFunc)

deferFunc is the function which will be called before terminating the application, if none, pass nil for it, i.e. checkError(errT, nil)


checkErrorString

the same as checkError, but check a TXERROR string


isErrStr

check if is TXERROR string (which starts with TXERROR:)


errStr

generate a TXERROR string (which starts with TXERROR:)


errStrf

generate a TXERROR string with format like printf, the same as tk.ErrStrF


getErrStr

remove the prefix(TXERROR:) of a TXERROR string, return the result


errf

the same as tk.Errf, generate an error


getInput(deprecated)

get user input from command-line

printf("A:")

a = getInput()

printf("B:")

b = getInput()

println("A + B =", a+b)

getInputf

the same as getInput, but use printf to print a prompt string

n = 3

a = getInputf("Please enter the %v value: ", n)

printf("B:")

b = getInput()

println("A + B =", a+b)

panic

raise a panic manually


try {
    panic("a manual panic")
} catch e {
    printfln("error: %v", e)
} finally {
    println("final")
}


try {
    panic(12345678)
} catch e {
    printfln(e)
}



keys

get the keys of a map


range

range an array, actually a keyword, not a function

a = [1, 2, "list"]

for i, v = range a {
    println(a)
}


deepClone

deep copy a struct variable and generate a new one

usage:

person1 = make(struct {
    Name string,
    Age int
})

person1.Name = "John"
person1.Age = 20

pl("%#v", person1)

person2 = person1

person2.Name ="Tom"

pv("person1")
pv("person2")

p3 = deepClone(&person1)
p3 = *p3
p3.Name = "abc"
pv("person1")
pv("person2")
pv("p3")

deepCopy

deep copy a struct variable to another one


getClipText

get clipboard text


setClipText

set clipboard text


trim

trim a string


run

execute a script file(in a new created VM)

run(argsA...)


runCode

execute a script string(in a new created VM, argsG will hold the arguments)

runCode(codeA string, argsA ...string)


runScript

runScript(scriptA, modeA, argsA ...)

modeA == "" || modeA == "1" || modeA == "new" 

run script in a new VM

any other modeA will run it as a system command.


magic

execute a script with a magic number(in a new created VM, argsG will hold the arguments)

magic(numberA, argsA...)


systemCmd

run a system command

systemCmd(cmdA, argsA ...)

newSSHClient

create a SSH client to run shell commands, upload/download file from a remote server. Thanks to melbahja and visit here to find more docs.

short examples:

clientT, errT = newSSHClient(hostName, port, userName, password)

outT, errT = clientT.Run(`ls -p; cat abc.txt`)

errT = clientT.Upload(`./abc.txt`, tk.Replace(tk.JoinPath(pathT, `abc.txt`), `\`, "/"))

errT = clientT.Download(`down.txt`, `./down.txt`)

find more in this example script here


getParameter

the same as tk.GetParameterByIndexWithDefaultValue


getSwitch

the same as tk.GetSwitchWithDefaultValue


switchExists

the same as tk.IfSwitchExistsWhole


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市嘉栓,隨后出現(xiàn)的幾起案子宏榕,更是在濱河造成了極大的恐慌拓诸,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件麻昼,死亡現(xiàn)場(chǎng)離奇詭異奠支,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)抚芦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)倍谜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人叉抡,你說(shuō)我怎么就攤上這事尔崔。” “怎么了褥民?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵季春,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我消返,道長(zhǎng)载弄,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任撵颊,我火速辦了婚禮宇攻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘倡勇。我一直安慰自己逞刷,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布妻熊。 她就那樣靜靜地躺著亲桥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪固耘。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 50,050評(píng)論 1 291
  • 那天词身,我揣著相機(jī)與錄音厅目,去河邊找鬼。 笑死法严,一個(gè)胖子當(dāng)著我的面吹牛损敷,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播深啤,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼拗馒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了溯街?” 一聲冷哼從身側(cè)響起诱桂,我...
    開(kāi)封第一講書(shū)人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤洋丐,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后挥等,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體友绝,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年肝劲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了迁客。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡辞槐,死狀恐怖掷漱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情榄檬,我是刑警寧澤卜范,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站丙号,受9級(jí)特大地震影響政鼠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜辛萍,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一恒削、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧怀薛,春花似錦刺彩、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至焚碌,卻和暖如春畦攘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背十电。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工知押, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鹃骂。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓台盯,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親畏线。 傳聞我的和親對(duì)象是個(gè)殘疾皇子静盅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容