GO学习第三天——自定义包
2013-11-05 00:00
162 查看
呵呵,由于最近有些琐碎事情,所以游戏连续几天都没有写了,但其实这几天都还有抽时间继续在写go的。
由于我是习惯java的变成风格的,所以一时间写go还真的是写的挺慢的,几天才弄了一点东西,除了不熟悉的原因之外,资料少也有很大的影响(不过这归根到底都是我查资料的能力问题吧)。
今天,首先讲一下自定义包。再一上一篇的Hello GO为例子进行修改吧。先看看我修改后的文件路径结构。
HelloGo是我的项目根目录。server.go里面包含了main方法。test是我自定义的包,里面包含了Config.go。注意GO是以包为单位的,Config.go是test包的一部分,这个是我一开始很不习惯的地方。
server.go内容如下
Config.go内容如下
和上一篇的对比一下会发觉其实就是把SayHelloGO方法写到了Config.go那里。值得注意的是方法名从sayHelloGO改成了SayHelloGO,在GO里面规定一个包里面的输出方法需要首字母大写。
现在说一下Config.go吧。首先是package test。报名是所在文件夹的名称。然后import对应的包,把原本在server.go里面的sayHelloGO放大改名为SayHelloGO,放到这里就可以了。
接下来就看看server.go吧。首先要import进自定义的包test。使用import ./test,而不是import ./test/Config.go(上面说过是一包为单位的)。然后把http.HandleFunc("/",sayHelloGO)改为http.HandleFunc("/",test.SayHelloGO)就可以了。
顺便说一下包里面还可以包含另一个包的。在现有基础上加一些东西。
如图,加了一个testAgain包在test下,testAgain里面有一个Print.go的文件。内容如下
未完,待续
由于我是习惯java的变成风格的,所以一时间写go还真的是写的挺慢的,几天才弄了一点东西,除了不熟悉的原因之外,资料少也有很大的影响(不过这归根到底都是我查资料的能力问题吧)。
今天,首先讲一下自定义包。再一上一篇的Hello GO为例子进行修改吧。先看看我修改后的文件路径结构。
HelloGo是我的项目根目录。server.go里面包含了main方法。test是我自定义的包,里面包含了Config.go。注意GO是以包为单位的,Config.go是test包的一部分,这个是我一开始很不习惯的地方。
server.go内容如下
package main import ( "net/http" "log" "./test" ) func main() { http.HandleFunc("/",test.SayHelloGO) err := http.ListenAndServe(":9090",nil) if err != nil { log.Fatal("ListenAndServe: ",err) } }
Config.go内容如下
package test import ( "fmt" "net/http" "strings" ) func SayHelloGO(w http.ResponseWriter, r *http.Request) { r.ParseForm() //解析参数,默认是不会解析的 fmt.Println(r.Form) //这些信息是输出到服务器端的打印信息 fmt.Println("path", r.URL.Path) fmt.Println("scheme", r.URL.Scheme) for k, v := range r.Form { fmt.Println("key:", k) fmt.Println("val:", strings.Join(v, "")) } fmt.Fprintf(w, "Hello GO!") }
和上一篇的对比一下会发觉其实就是把SayHelloGO方法写到了Config.go那里。值得注意的是方法名从sayHelloGO改成了SayHelloGO,在GO里面规定一个包里面的输出方法需要首字母大写。
现在说一下Config.go吧。首先是package test。报名是所在文件夹的名称。然后import对应的包,把原本在server.go里面的sayHelloGO放大改名为SayHelloGO,放到这里就可以了。
接下来就看看server.go吧。首先要import进自定义的包test。使用import ./test,而不是import ./test/Config.go(上面说过是一包为单位的)。然后把http.HandleFunc("/",sayHelloGO)改为http.HandleFunc("/",test.SayHelloGO)就可以了。
顺便说一下包里面还可以包含另一个包的。在现有基础上加一些东西。
如图,加了一个testAgain包在test下,testAgain里面有一个Print.go的文件。内容如下
package testAgain import ( "fmt" ) func Print() { fmt.Println("OK") }然后server.go里面加一句import "./test/testAgain",并且在http.HandleFunc("/",test.SayHelloGO)之前加一句testAgain.Print(),启动server.go,观察控制台就可以发现在启动服务器之前会调用testAgain.Print()方法打印出了OK。
未完,待续
相关文章推荐
- Golang 连接mysql
- 最新的GO!
- Windows to Go 把你的Windows装进U盘里
- 再看GOPATH
- go语言介绍
- 开始写一本书:《Go语言标准库》,欢迎Go爱好者阅读
- sublime for Go
- Louis Vuitton and World Cup
- 第一次用,看看效果如何!
- Runescape Pking
- How to do the trade after new updates?
- 求高手指点迷津
- Christian louboutin voice
- Christian louboutin biography
- Christian louboutin is spring
- Christian Louboutin wedding shoes
- How to Perfectly Uninstall Nero 11
- 误传(转载)