我的第一个比较实用的GO语言程序

前端之家收集整理的这篇文章主要介绍了我的第一个比较实用的GO语言程序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我们的代码当中有很多很多如下的代码

UarrMain[0] := AsMainType(edLayer,myStr,'Layer','结构层名称');

UarrMain[1] := AsMainType(edKind,'Kind','稳定剂种类');

.......

UArrSub[0] := AsSubType(myInt,True,'seqnum','序号');

UArrSub[1] := AsSubType(myStr,False,'BoxNumber','试验盒号');

UArrSub[2] := AsSubType(myFloat,'BoxWeigth','盒的质量');

.....

我现在需要提取第三个,第四个参数。

放上来,下次电脑坏就不用重新写了。工作当中用到的,可以减轻工作量。

一边学一边写的,比较手生,翻了很多次文档才写出来。 关键是正则,当然没有考虑所有的情况。
这门语言对GUI支持的不好,因为是面向服务器的开发。就胡乱弄了个B/S的,代码如下:
 
 
  1. packagemain
  2. import
  3. (
  4. "io"
  5. "fmt"
  6. "regexp"
  7. "strings"
  8. "net/http"
  9. )
  10. const(
  11. sql="EXECsys.sp_addextendedproperty@name=N'MS_Description',@value=N'AAAA',@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'CCCC',@level2type=N'COLUMN',@level2name=N'BBBB'"
  12. sql2="EXECsys.sp_addextendedproperty@name=N'MS_Description',@level1name=N'CCCC'"
  13. html=
  14. `<html>
  15. <head><title>提取<a/title></head>
  16. <body><formmethod='post'>
  17. TableName:<inputtype="text"name="tablename"></input>qs_Table中的TableName,比如TestRecordC21<br></br>
  18. 表格名称:<inputtype="text"name="tablename2"></input>比如石料试验记录<br></br>
  19. <textarearows="20"cols="120"name="target"></textarea><br></br>
  20. <inputtype="submit"value="Submit"></input>
  21. %s
  22. </form>
  23. </body>
  24. </html>`
  25. )
  26. funcmySearch(strstring)(resultstring){
  27. result=""
  28. regSub:=regexp.MustCompile(`(?i)AsSubType\s*\(\w+\s*\,\s*(True|False)\s*\,\s*\'\s*(\w+)\s*\'\s*\,\s*\'\s*(.*?)\s*\'`)
  29. regMain:=regexp.MustCompile(`(?i)AsMainType\s*\(\w+\s*\,\s*(\w+)\s*\,\s*\'\s*(.*?)\s*\'`)
  30. resultSub:=regSub.FindAllStringSubmatch(str,-1)
  31. resultMain:=regMain.FindAllStringSubmatch(str,-1)
  32. for_,V:=rangeresultSub{
  33. result=result+strings.Replace(strings.Replace(sql,"AAAA",V[3],-1),"BBBB",V[2],-1)+
  34. "<br></br>"+"GO"+"<br></br>"
  35. }
  36. for_,V:=rangeresultMain{
  37. result=result+strings.Replace(strings.Replace(sql,-1)+
  38. "<br></br>"+"GO"+"<br></br>"
  39. }
  40. return
  41. }
  42. funcAnalyze(whttp.ResponseWriter,r*http.Request){
  43. ifr.Method=="GET"{
  44. io.WriteString(w,strings.Replace(html,"%s","",-1))
  45. return
  46. }
  47. ifr.Method=="POST"{
  48. str:=r.FormValue("target")
  49. tablename:=r.FormValue("tablename")
  50. tablename2:=r.FormValue("tablename2")
  51. iftablename==""{
  52. io.WriteString(w,"<divborder='1'>"+
  53. "TableName没有填写"+"</div>",-1))
  54. return
  55. }
  56. iftablename2==""{
  57. io.WriteString(w,"<divborder='1'>"+
  58. "表格名称没有填写"+"</div>",-1))
  59. return
  60. }
  61. ifstr==""{
  62. io.WriteString(w,"<divborder='1'>"+
  63. "查找内容没有填写"+"</div>",-1))
  64. return
  65. }
  66. sqlCMD:=strings.Replace(html,"<divborder='1'>"+
  67. strings.Replace(mySearch(str),"CCCC",tablename,-1)+"</div>",-1)
  68. sqlCMD=sqlCMD+strings.Replace(strings.Replace(sql2,tablename2,"CCCC",-1)
  69. io.WriteString(w,sqlCMD)
  70. }
  71. }
  72. funcmain(){
  73. fmt.Println("Openhttp://localhost:8888/extract")
  74. http.HandleFunc("/extract",Analyze)
  75. err:=http.ListenAndServe(":8888",nil)
  76. iferr!=nil{
  77. fmt.Println(err.Error())
  78. }
  79. }

猜你在找的正则表达式相关文章