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編碼( 等)
"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ù)史辙。
相當(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