Gin

来自linux中国网wiki
跳到导航 跳到搜索

install

https://github.com/goproxy/goproxy.cn

pre install golang

Golang

#apt 
#可以指定版本的
sudo apt install  golang

sudo apt  install golang-go gccgo-go
sudo apt  install golang-go 

FQ

tail  /etc/profile
#export http_proxy=http://192.168.10.173:8888
#export https_proxy=http://192.168.10.173:8888


source /etc/profile

install Gin package

 export PATH=/usr/local/go/bin/:$PATH
 export GOPATH=/root/go #if U user is root 

If you're in China

如果您使用的 Go 版本是 1.13 及以上

#nov 29 2021
 export GO111MODULE=on
 export GOPROXY=https://goproxy.cn


or

echo "export GO111MODULE=on" >> ~/.profile
echo "export GOPROXY=https://goproxy.cn" >> ~/.profile
source ~/.profile



go env -w GO111MODULE=on #注意这个打开后面可能会问题导致
go env -w GOPROXY=https://goproxy.io,direct

#or
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct

# 设置不走 proxy 的私有仓库,多个用逗号相隔(可选)
go env -w GOPRIVATE=*.corp.example.com

# 设置不走 proxy 的私有组织(可选)
go env -w GOPRIVATE=example.com/org_name

Go 版本是 1.12 及以下

# 启用 Go Modules 功能
export GO111MODULE=on
# 配置 GOPROXY 环境变量
export GOPROXY=https://goproxy.io

或者,根据文档可以把上面的命令写到.profile或.bash_profile文件中长期生效

初始化 gin

go mod

go env -w GO111MODULE=on #注意这个打开后面可能会问题导致
go env -w GOPROXY=https://goproxy.io,direct

cd   mygo/
mkdir  ginweb
cd ginweb/
go mod init ginweb(名字自定义)
go get -u github.com/gin-gonic/gin #注意 ,用go mod 来管理  june   08 2020  goverdor 已过期 请用 go mod  安装一般用下面的goverdor 版本管理 tool 去安装 这一块可以直接跳过
 go run example.go 

ps 
evan@myxps:~/mygo/ginweb$ echo $GOROOT
/home/evan/go
evan@myxps:~/mygo/ginweb$ echo $GOPATH
/home/evan/go

#别人的例子
编写 HelloWorld 文件,测试运行环境。

package main
import "fmt"
func main(){
    fmt.Println("hello,world!")
}

go run hello.go
go build hello.go 

创建 go.mod 文件

go mod init hello

用 Gin 实现一个简单的 http 服务

import (
    "gopkg.in/gin-gonic/gin.v1"
    "net/http"
)

func main(){
    
    router := gin.Default()

    router.GET("/", func(c *gin.Context) {
        c.String(http.StatusOK, "Hello World")
    })
    router.Run(":8000")
}

直接编译执行 

go run hello

可以看到引用的包都被自动下载了

放弃了 Use a vendor tool like Govendor

 go get -u -v github.com/kardianos/govendor
 go get github.com/kardianos/govendor #在墙外非常快
sudo apt  install govendor # apt 
mkdir -p $GOPATH/src/github.com/myusername/project && cd "$_"

Vendor init your project and add gin

govendor init
govendor fetch github.com/gin-gonic/[email protected]

#有时要绝对路径  @后面也可以不加  有时一定要加
/root/go/bin/govendor fetch github.com/gin-gonic/[email protected]

learn

go官方推出的gin教程 https://docs.studygolang.com/doc/tutorial/web-service-gin

https://go.dev/doc/tutorial/web-service-gin


https://github.com/astaxie/build-web-application-with-golang

https://github.com/avelino/awesome-go

https://gin-gonic.com/docs/quickstart/

https://github.com/gin-gonic/examples

Go Gin 简明教程


https://learnku.com/docs/gin-gonic/2019

GO语言web框架Gin之完全指南(一)

GO语言web框架Gin之完全指南(二

初学Golang:Gin 框架中文文档教程


Gin middleware中间件使用实例

Gin源码解析和例子——路由

https://godoc.org/golang.org/x/tools/cmd

IDE

golnad and 50.Go Mod 来创建 Gin 项目

trouble

working directory is not part of a module


关闭go代理就行了  或者 google 

ct$ go run main.go 
main.go:6:2: cannot find module providing package github.com/gin-gonic/gin: working directory is not part of a module
evan@myxps:~/go/src/github.com/myusername/project$ go env -w GO111MODULE=off





 go run 2.go 
2.go:3:8: cannot find module providing package github.com/gin-gonic/gin: working directory is not part of a module
evan@myxps:~/data/devops/go/tmp$ echo $GOROOT 

evan@myxps:~/data/devops/go/tmp$ go mod init gin 
go: creating new go.mod: module gin
evan@myxps:~/data/devops/go/tmp$ ls 
1.go  2.go  go.mod
evan@myxps:~/data/devops/go/tmp$ go mod  vendor 
go: finding module for package github.com/gin-gonic/gin
go: found github.com/gin-gonic/gin in github.com/gin-gonic/gin v1.7.7

1.6 err

# go   run main.go 
# github.com/myusername/project/vendor/github.com/gin-gonic/gin
vendor/github.com/gin-gonic/gin/context.go:36:26: undefined: binding.MIMEYAML
vendor/github.com/gin-gonic/gin/context.go:600:29: undefined: binding.YAML
vendor/github.com/gin-gonic/gin/context.go:605:29: undefined: binding.Header
vendor/github.com/gin-gonic/gin/context.go:659:31: undefined: binding.YAML
vendor/github.com/gin-gonic/gin/context.go:664:31: undefined: binding.Header
vendor/github.com/gin-gonic/gin/context.go:673:9: undefined: binding.Uri
vendor/github.com/gin-gonic/gin/context.go:896:17: undefined: render.PureJSON
vendor/github.com/gin-gonic/gin/context.go:912:17: undefined: render.ProtoBuf
vendor/github.com/gin-gonic/gin/context.go:1027:7: undefined: binding.MIMEYAML
vendor/github.com/gin-gonic/gin/mode.go:83:2: undefined: binding.EnableDecoderDisallowUnknownFields

see also

Gin实战:Gin+Mysql简单的Restful风格的API


Golang 入门-Gin框架安装及使用


Golang(不存在)的包管理


go mod

golang包管理解决之道——go modules初探

go mod常用命令 以及 常见问题

go语言web框架gin安装(go mod方式)

放弃govendor

Golang包管理工具(一)之govendor的使用

govendor的安装与实践

golang使用govendor教程

Go 包依赖管理工具 —— govendor

Go Mod对比Go Vendor

Govendor使用