官网下载go的tar包解压安装(gccgo也是gcc工具集中用来编译go的,非必要不安装gccgo)
wget https://golang.google.cn/dl/go1.19.2.linux-amd64.tar.gz
tar -xzvf go1.19.2.linux-amd64.tar.gz
mv go /usr
go version
go version go1.19.2 linux/amd64
vim /etc/profile
export GOROOT=/usr/go
export GOPATH=/home/guohua/golang #编译依赖自动下载的包都在这个目录下,gomod 模式下载的包在 mod/pkg/mod/下
#export GOPROXY=https://goproxy.io
export GOPROXY=http://192.168.24.11:3000
export GOARCH=amd64
export GOOS=linux
export GOTOOLS=$GOROOT/pkg/tool
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
代理配置:export GOPROXY=https://goproxy.cn,内部用的这个代理 GOPROXY=http://192.168.24.11:3000;GOSUMDB=off 下载不了github.com的资源
vim main.go
package main
import "fmt"
func main(){
fmt.Println("hello!");
}
go build -o test main.go
./test
go mod使用(使用 go.mod,代理配置好后编译时自动下载依赖包)
export GO111MODULE=on
go mod init hello //不能在GOPATH下建立go.mod,要在GOPATH以外的目录建立
go build
./hello
vim go.mod
module hello
go 1.19
Go 自定义error:
err := fmt.Errorf("no the customer(%s)'s conference")
使用syslog:
import (
"fmt"
"log/syslog"
)
var (
syslog_w *syslog.Writer
)
func InitializeSyslog(procName string, network string, raddr string) bool {
if network == "" || raddr == "" {
network = ""
raddr = ""
}
t, err := syslog.Dial("", "", syslog.LOG_LOCAL7|syslog.LOG_NOTICE, procName)
if err != nil {
fmt.Printf("open common syslog fail, %s", err.Error())
return false
}
syslog_w = t
return true
}
func Syslog_Notice(format string, v ...interface{}) {
syslog_w.Notice(fmt.Sprintf(format, v...))
}
func SysLog_Close() {
syslog_w.Close()
}