首页 > 其他分享 >Go语言学习笔记 - 不定时更新

Go语言学习笔记 - 不定时更新

时间:2024-01-18 11:32:42浏览次数:18  
标签:git 代码 笔记 go Go 定时 main mod

Go语言常用命令

环境准备

#修改go配置
export GOPROXY="https://goproxy.cn"

Go Mod (注:比较常用的是 init,tidy, edit)

go mod init name  create modules (创建包名 注: 包名在 import 引入自定义包时替代GOPATH)
go mod download   download modules to local cache(下载依赖包)
go mod edit	      edit go.mod from tools or scripts(编辑go.mod)
go mod graph	  print module requirement graph (打印模块依赖图)
go mod verify     initialize new module in current directory(在当前目录初始化mod)
go mod tidy	      add missing and remove unused modules(拉取缺少的模块,移除不用的模块)
go mod vendor     make vendored copy of dependencies(将依赖复制到vendor下)
go mod verify     verify dependencies have expected content (验证依赖是否正确)

goctl 介绍

#goctl 是一个基于 Go 语言的开发工具,主要用于生成各种语言(如 Go、Java、PHP 等)的 API 代码和文档。goctl 命令提供了很多有用的子命令,下面是一些常见的子命令及其介绍:
#api: 生成 API 代码的命令。可以根据 .proto 文件生成对应的 Go、Java、PHP 等语言的代码。
#plugin:安装或升级插件。
#sql:根据数据库表生成对应的 Go、Java、PHP 等语言的代码。
#rpc:生成 RPC 代码的命令。可以根据 .proto 文件生成对应的 Go、Java、PHP 等语言的代码。
#dockerfile:生成 Dockerfile 文件的命令。
#kubernetes:生成 Kubernetes 部署文件的命令。
#grpc-gateway:生成 grpc-gateway 代理服务代码的命令。
#api plugin:为 api 子命令安装或升级插件。
#sql plugin:为 sql 子命令安装或升级插件。
#gen plugin:为 goctl 工具安装或升级插件。
#注意:以上子命令只是 goctl 提供的部分命令,更多详情请使用 goctl -h 查看。

go api new demo #生成代码块

Go编译

目录结构

- 根目录
  - api # 存放使用 Protocol Buffers 定义的 API 接口文件。
  - etc # 存放其他配置文件,如限流配置、路由配置等。
  - internal # 存放项目的内部代码
    - biz # 业务逻辑代码
    - config # 存放项目的配置代码
	- handler # 存放函数相关代码
	- logic # 存放公共业务逻辑代码
	- middleware # 存放中间件相关的代码
	- model # 存放数据模型相关的代码。
	- pkg # 存放代码库相关代码
	- svc # 存放服务上下文相关的代码。
	- types # 自定义类型、结构体、接口
  main.go # 项目的入口文件。
  go.mod

编译Shell

#!/bin/bash

#修改go配置
export GOPROXY="https://goproxy.cn"

#拉取缺少的模块,移除不用的模块
go mod tidy

#跨系统编译
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ./main main.go

Git打包

#!/bin/bash
prefix=`git status|grep 'On branch'|awk '{print $3}'`'-'`date "+%Y%m%d"`
git push
git pull --tags
tag_name="${prefix}-"`git tag -l "${prefix}*"|wc -l|xargs printf "%02d\n"`
git tag ${tag_name}
git push --tags

Dockerfile

# 基础镜像
FROM docker.io/alpine:3.13.5
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories
# 时区文件
COPY localtime /etc/localtime
# 用RUN_MODE来区分环境 (0-开发环境,1-生产,2-测试,3-预上线)
ENV RUN_MODE 1
# 代码目录
WORKDIR /data/work/zhw-code
# 拷贝程序和配置文件
COPY main ./main
COPY conf ./conf
COPY cmd ./cmd
# 拷贝其他文件,如静态文件、模版等目录,在下面逐条新增COPY指令
COPY public ./public
# COPY static ./static
# 程序监听的端口,根据实际情况修改
EXPOSE 9100
CMD ["./main"]

发布说明

#1.拉取代码
git checkout tag_name

#2.编译文件
export GOPROXY='https://goproxy.cn' && go mod tidy && CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ./main main.go

#3.拷贝代码

#3.1需要有静态资源(目录是static)
mkdir -p work && cp -a main ./work/ && cp -a static ./work/

#3.2不需要有静态资源
#mkdir -p work && cp -a main ./work/

#4.构建代码镜像 - Dockerfile 中 ENV RUN_MODE 1 (0-开发环境,1-生产,2-测试,3-预上线)
docker build -f Dockerfile -t image_name .

#5.发布代码
kubectl apply -f filename.yaml

标签:git,代码,笔记,go,Go,定时,main,mod
From: https://blog.51cto.com/lzcit/9305040

相关文章

  • 阅读笔记《大象:Thinking in UML》下
    《ThinkinginUML》中的大象思考引发了我对UML在软件开发中的重要性和应用的思考。大象的比喻不仅揭示了软件项目的庞大和复杂性,同时也突显了UML作为一种建模语言的价值。首先,大象象征了软件项目的庞大复杂性。在一个庞大的项目中,各种功能、模块和组件交织在一起,形成了一个庞大......
  • 【Django】通用分块上传
    通用分块上传文件importos#通用路径分块上传defpiecemeal_public_load(path,original_md5_hash,chunk_index,upload_file,chunk_total,file_Name):"""path:存放路径(media/后面跟的路径)original_md5_hash:临时文件夹名称chunk_inde......
  • Woodpecker CI 设计分析|一个 Go 编写的开源持续集成引擎
    一、前言大家好,这里是白泽。随着Go语言在云原生领域大放异彩,开发者逐渐将目光转移到了这门语言上,而容器则是云原生时代最核心的载体。《WoodpeckerCI设计分析》系列文章将分析开源CI引擎Woodpecker的架构设计,探究Go协程是如何支持由Workflow定义的大量Task的频繁......
  • 《人月神话》读书笔记2
    第六章贯彻执行:手册、或者书面规格说明,是一个非常必要的工具,尽管光有文档是不够的。手册是产品的外部规格说明,它描述和规定了用户所见的每一个细节;同样的,它也是结构师主要的工作产物。第七章:为什么巴比伦塔会失败:即使拥有充足的技术、人力、时间等资源也是不够的。还要有沟通、......
  • 《人月神话》读书笔记1
    《人月神话》是讲软件工程中人与团队的关系,讨论那些由团队开发的大程序。第一章焦油坑:焦油坑对应软件,程序员对应各种野兽的比喻很贴切。事实上在实际工作中的感受确实如此,为何精心编制的作品终有一日成了这样的焦油坑?这里无需找其他类似于历史债务、团队水平等借口为自己开脱,程......
  • 使用 Docker 安装 MongoDB 数据库
    byemanjusakafromhttps://www.emanjusaka.top/2024/01/docker-create-mongo-db彼岸花开可奈何本文欢迎分享与聚合,全文转载请留下原文地址。Docker安装命令dockerrun-d--namemongo--restart=always--privileged=true-p27017:27017-v/opt/doc/data:/data/dbmo......
  • mac m1 golang 运行go项目没法dbg解决
    1.首先终端看 uname-m如果是显示armd的话就是m12.go版本需要安装arm64版本(macm1) 3.golang编辑器也要安装m1版本的 4.dbg成功 ......
  • 每个Go程序员必犯之错之切片循环错误
    每个Go程序员必犯之错原创 晁岳攀(鸟窝) 鸟窝聊技术 2023-12-1808:48 发表于北京 听全文说起每个程序员必犯的错误,那还得是"循环变量"这个错误了,就连Go的开发者都犯过这个错误,这个错误在Go的FAQ中也有提到Whathappenswithclosuresrunningasgoroutines?[......
  • flask伪造session的一些笔记
    关于flask工具要注意的一些点:密钥使用字符串和数字生成出来的是不一样的伪随机数生成key的时候python2和python3是不一样的,python2会后面的小数自动约分。解密出来的字符串不能直接更改值,需要改为键对值的格式伪随数生成key的方法有很多种,有的可以获取mac地址/sys/class/net/......
  • 2024/1/17 算法笔记
    1.欧拉质数筛功能是给一个整数n查找小于等于n的所有质数。最后使用的是prime【i】//功能:查找n内第x个质数。boolisprime[100000010];//isprime[i]=1表示:i是素数intprime[6000010],cnt=0;//prime存质数voidgetprime(intn){//筛到n也就是n以内的质数memset(is......