一.下载安装go
到墙内下载go的安装包:
http://www.golangtc.com/download
点击安装包然后进行安装
二.配置
1.查看环境
go version
2.安装完sdk之后接下来便是配置环境变量了,打开终端输入cd ~ 进入用户主目录,之后输入ls -all命令查看是否存在.bash_profile
文件,存在既使用vim .bash_profile打开并编辑该文件。根据自己实际情况,内容如下:
export GOPATH=/Users/apple/Documents/dev/go export GOBIN=$GOPATH/bin export PATH=$PATH:$GOBIN
go env
GOARCH="386" GOBIN="/Users/apple/Documents/dev/go/bin" GOCHAR="8" GOEXE="" GOHOSTARCH="386" GOHOSTOS="darwin" GOOS="darwin" GOPATH="/Users/apple/Documents/dev/go" GORACE="" GOROOT="/usr/local/go" GOTOOLDIR="/usr/local/go/pkg/tool/darwin_386" CC="gcc" GOGCCFLAGS="-fPIC -m32 -pthread -fmessage-length=0 -fno-common" CXX="g++" CGO_ENABLED="1"
cd /Users/apple/Documents/dev/go
vim main.go
package main import ( "fmt" ) func main() { fmt.Println("hello go"); }
使用go build xx(项目名称)对其进行编译
adeMacBook-Pro:go apple$ ./main
hello go
例子1(socket编程:参考http://studygolang.com/articles/1879):
server端代码:
package main import ( "log" "net" ) //socket编程例子 func main() { ln, err := net.Listen("tcp", ":5555") if err != nil { log.Println(err) return } for { conn, err := ln.Accept() if err != nil { log.Println(err) continue } go echoFunc(conn) } } func echoFunc(c net.Conn) { buf := make([]byte, 1024) for { n, err := c.Read(buf) if err != nil { log.Println(err) return } c.Write(buf[:n]) } }
client端代码:
package main import ( "fmt" "net" "time" ) const RECV_BUF_LEN = 1024 //socket编程例子 func main() { conn, err := net.Dial("tcp", "127.0.0.1:5555") if err != nil { panic(err.Error()) } defer conn.Close() buf := make([]byte, RECV_BUF_LEN) for i := 0; i < 5; i++ { //准备要发送的字符串 msg := fmt.Sprintf("Hello World, %03d", i) n, err := conn.Write([]byte(msg)) if err != nil { println("Write Buffer Error:", err.Error()) break } fmt.Println(msg) //从服务器端收字符串 n, err = conn.Read(buf) if err != nil { println("Read Buffer Error:", err.Error()) break } fmt.Println(string(buf[0:n])) //等一秒钟 time.Sleep(time.Second) } }
运行结果:
例子2(循环):
package main //导入fmt包 import ( "fmt" ) //main函数定义 func main() { ForExample() fmt.Println("----------------------") GoExample() fmt.Println("----------------------") ArrExample() fmt.Println("----------------------") Revert("testRevert hah") } //创建一个基于for的简单的循环。使其循环10次,并且使用fmt包打印出计数器的值。 func ForExample() { for i := 0; i < 10; i++ { fmt.Println(i) } } //创建一个基于for的简单的循环。使其循环10次,并且使用fmt包打印出计数器的值。 func GoExample() { i := 0 I: fmt.Println(i) i++ if i < 10 { goto I } } //再次改写1的循环,使其遍历一个array,并将array打印到屏幕上 func ArrExample() { arr := [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} for _, val := range arr { fmt.Println(val) } } //编写一个逆转字符串的程序,例如:"foobar"打印成为"raboof"; func Revert(s string) { var result string for _, val := range s { result = string(val) + result } fmt.Println(result) }