少说话多写代码之GO开发——004:go包引用

栏目: Go · 发布时间: 5年前

内容简介:一般go的项目中用文件夹区分一个模块和功能。一个文件夹可看作一个包,同一个文件夹下的多个文件一般都放在同一个包下。mian.gotestMysqlOp.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。


以上所述就是小编给大家介绍的《少说话多写代码之GO开发——004:go包引用》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

硅谷之火

硅谷之火

保罗·弗赖伯格、迈克尔·斯韦因 / 张华伟 编译 / 中国华侨出版社 / 2014-11-1 / CNY 39.80

《硅谷之火:人与计算机的未来》以生动的故事,介绍了计算机爱好者以怎样的创新精神和不懈的努力,将计算机技术的力量包装在一个小巧玲珑的机壳里,实现了个人拥有计算机的梦想。同时以独特的视角讲述了苹果、微软、太阳微系统、网景、莲花以及甲骨文等公司的创业者们在实现个人计算机梦想的过程中创业的艰辛、守业的艰难、失败的痛苦,在激烈竞争的环境中奋斗的精神以及在技术上不断前进的历程。一起来看看 《硅谷之火》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

SHA 加密
SHA 加密

SHA 加密工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器