少說話多寫程式碼之GO開發——004:go包引用
一般go的專案中用資料夾區分一個模組和功能。一個資料夾可看作一個包,同一個資料夾下的多個檔案一般都放在同一個包下。
mian.go
package main import "testPrint" import "fmt" func main(){ //測試helloword fmt.Println("我的第一個mac上的go程式") //測試資料庫連線 testMysqlConnect() //測試呼叫webservice testPostWebservice() //測試另一個資料夾中的方法 testPrint.ShowPrint() }
testMysqlOp.go
package main import ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) func checkErr(err error){ if err!=nil{ panic(err) } } func main(){ //fmt.Println("我的第一個mac上的go程式") db,err:=sql.Open("mysql", "使用者名稱:密碼@tcp(127.0.0.1:3306)/mysql?charset=utf8") checkErr(err) stmt,err:=db.Prepare("select name,age,address from yys_person_info where 1=1") checkErr(err) rows ,err :=stmt.Query() checkErr(err) for rows.Next() { var name string var age string var address string err :=rows.Scan(&name,&age,&address) checkErr(err) fmt.Println(name,age,address) } defer db.Close() defer stmt.Close() defer rows.Close() }
testWebserviceOP.go
package main import ( "fmt" "net/http" "io/ioutil" "bytes" "unsafe" ) func checkErr(err error){ if err!=nil{ panic(err) } } func main(){ //測試呼叫webservice paras :="<paraName1>hhhh</paraName1 >"+ "<paraName2>kkkk</paraName2>"+ "<paraName3>TY</paraName3>"+ "<paraName4>1</paraName4>" postStr := GenSOAPXml("http://tempuri.org/", "MethodName", paras) PostWebService("http://ganmane.com/hehe/wodishen.asmx", "MethodName", postStr) } func PostWebService(url string, method string, value string) string { res, err := http.Post(url, "text/xml; charset=utf-8", bytes.NewBuffer([]byte(value))) //錯誤日誌 if err != nil { fmt.Println("post error", err) } data, err := ioutil.ReadAll(res.Body) if err != nil { fmt.Println("read error", err) } res.Body.Close() fmt.Printf("result----%s", data) str :=(*string)(unsafe.Pointer(&data)) return*str } func GenSOAPXml(nameSpace string, methodName string, valueStr string) string { soapBody := `<?xml version="1.0" encoding="utf-16"?>` soapBody += `<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">` soapBody += " <soap:Body>" soapBody += "<" + methodName + " xmlns=\"" + nameSpace + "\">" //以下是具體引數 soapBody +=valueStr soapBody += "</" + methodName + "> </soap:Body></soap:Envelope>" fmt.Println(soapBody) return soapBody }
上面幾個檔案都在main資料夾下,包名也是main。
於是,新建一個資料夾testPrint,新建檔案
myPrint.go
package testPrint import "fmt" func ShowPrint(){ fmt.Println("包testPrint下的列印方法") }
在main.go中引用如下
import "testPrint"
呼叫格式:testPrint.ShowPrint()
這裡需要注意,myPrint.go的方法ShowPrint首字母大寫的。如果這個方法是對外需要訪問的,需要首字母大寫。
不然會報這個錯:cannot refer to unexported name testPrint.showPrint。