Mac下搭建go语言开发环境

时间:2022-06-21 08:59:31

一.下载安装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)
    }
}

运行结果:

Mac下搭建go语言开发环境

例子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)
}