golang slice

golang之增加版本信息功能

在实际开发中,当开发完一个 apiserver 特性后,会编译 apiserver 二进制文件并发布到生产环境,很多时候为了定位问题和出于安全目的(不能发错版本),我们需要知道当前 apiserver 的版本,以及一些编译时候的信息,如编译时 Go 的版本、Git 目录是否 clean,以及基于哪个 ......
版本 功能 golang 信息

golang init函数、defer函数、匿名函数、错误处理

1. init 每一个源文件都可以包含一个init函数,该函数会在main函数执行前,被Go运行框架调用,也就是说init会在main函数前被调用,当有全局变量跟main函数 init 函数 同时出现的时候 执行的顺序是 全局函数==》init函数==》main函数 package main imp ......
函数 错误 golang defer init

golang常用函数

1.文件读写 package main import ( "fmt" "os" ) func main(){ yaml_str,err:=os.ReadFile("poc/1.yml") if err!=nil{ panic(err) } poc_old:=string(yaml_str) os.W ......
函数 常用 golang

Golang 需要注意的知识点

云笔记链接地址 go的协程轻量级体现在哪 (1) goroutine 是轻量级的用户态线程,上下文切换代价小 go 将 goroutine 的调度维持在用户态 常规线程切换会导致用户态程序代码和内核态操作系统调度程序的切换 只涉及PC(程序计数器,标记当前执行的代码的位置) SP(当前执行的函数堆栈 ......
知识点 知识 Golang

golang中goto跳转语句和跳转标签声明

和很多其它语言一样,Go也支持goto跳转语句。 在一个goto跳转语句中,goto关键字后必须跟随一个表明跳转到何处的跳转标签。 我们使用LabelName:这样的形式来声明一个名为LabelName的跳转标签,其中LabelName必须为一个标识符。 一个不为空标识符的跳转标签声明后必须被使用至 ......
语句 标签 golang goto

slice 切片数组测试记录【GO 基础】

〇、测试前准备 本文是在 GO 环境下测试记录系列之一,GO 基本环境部署步骤将略过,直接上代码。 下面是常用命令:【初始化 + 运行 + 编译】 // {GOPATH} 环境变量值, example 项目文件夹名称 {GOPATH}\src\example> // 运行代码 // xxx.go 为 ......
数组 基础 slice

Golang设计模式

Golang 设计模式 一、设计模式概述 1.1 概述 如果把修习软件开发当做武功修炼的话,那么可以分为招式和内功。 招式: Java、C#、C++、Golang、Rust等编程语言; Eclipse、Visual Studio、Goland、Vim等开发工具; Struts、Hibernate、J ......
设计模式 模式 Golang

GoLang:字符串

学习自:Go教程141页 1、定义 str1 := "abc" 2、字符串处理函数 所属包:strings 函数 返回值类型 说明 len(str) int 长度 len还能用于统计列表大小 子串出现位置 Index(主串,子串) int 子串出现位置 IndexByte(主串,单字符) 字符出现位 ......
字符串 字符 GoLang

GoLang:异常处理

学习自:Go教程137页 1、异常 程序运行时,发生了不被期望的事件,它阻止程序正常预期的运行 Go中两种处理异常的方式: 程序异常时,将异常信息反馈给使用者 程序异常时,终止运行立刻退出 2、打印异常信息 1)fmt包中的Errorf函数创建error类型,打印 var err error = f ......
GoLang

GoLange:面向对象

学习自:Go教程130页 1、类定义 方式:结构体+方法 结构体:定义有哪些数据 方法:定义结构体的方法 例子:定义一个Person类 //结构体定义人的属性 type Person struct { name string age int } //方法定义人的行为 func (p Person)S ......
对象 GoLange

Golang - Slice 学习笔记

# Slice ## 1、概述: Slice又称动态数组,依托数组实现,可以方便的进行扩容、传递等,实际使用中比数组更灵活。 ## 2、实现原理 ==**Slice依托数组实现,底层数组对用户屏蔽,在底层数组容量不足时可以实现自动重分配并生成新的Slice。接下来按照实际使用场景分别介绍其实现机制。 ......
笔记 Golang Slice

GoLang:指针

学习自:GoLang教程110页 1、普通指针 说明 指针变量用于存放其他变量的地址 无论指向什么类型的变量,指针的实际内存占用都是一样的:32位4B,64位8B: var p1 *int; var p2 *float64; var p3*bool; fmt.Println(unsafe.Sizeo ......
指针 GoLang

GoLang:map

学习自:GoLang学习手册100页 1、说明 map,即字典,存储一系列的K-V对,通过Key获取响应的元素。 2、定义 1)定义 dic := map[K类型]V类型{K1:V1,K2:V2,K3:V3,...} var dic map[K类型]V类型 = map[K类型]V类型{K1:V1,K ......
GoLang map

CentOS 7.9 一键安装 Node.js Golang Docker 环境

本脚本仅支持CentOS7.9_x64, 安装 golang 1.21.0 node.js 16.20.2 docker latest ``` bash #!/bin/bash yum install -y wget make NODE_VERSION=node-v16.20.2-linux-x64 ......
环境 CentOS Golang Docker Node

golang.org/x/子仓库

在 Go 语言的生态中,`golang.org/x/` 是一个特殊的前缀,它表示一系列 Go 子仓库,这些子仓库包含了 Go 核心开发团队维护的实验性或辅助工具、库和包。这些仓库可能不会被包含在 Go 的标准库中,但它们仍然由 Go 的核心维护者维护,并且通常有很高的质量标准。 这些 `golang ......
仓库 golang org

golang 读取运行程序的相关目录

获取运行程序的所在目录、工作目录 import ( "fmt" "os" "path/filepath" ) func main() { fmt.Println("start m1") path, _ := os.Executable() fmt.Println("path", filepath.D ......
目录 程序 golang

golang Gin框架 自定义日志形式

```go func main() { router := gin.New() // LoggerWithFormatter middleware will write the logs to gin.DefaultWriter // By default gin.DefaultWriter = o ......
框架 形式 golang 日志 Gin

golang字符串切片去重

函数的功能是从输入的字符串切片中去除重复的元素,并返回去重后的结果。具体的实现逻辑如下: 创建一个空的结果切片result,用于存储去重后的字符串。 创建一个临时的maptempMap,用于存放不重复的字符串。map的键是字符串,值是字节类型。 遍历输入的字符串切片slc中的每个元素e: 首先,获取 ......
字符串 字符 golang

golang之代码检查工具golangci-lint

日常开发中,想要保证工程中代码能够正常运行, 一般都会使用vet进行代码静态扫描, 但是每次手动执行命令有点不太方便,如果在每次开发完成之后,git提交的时候都进行下检查就OK了,想好就干!!! 这里使用golangci-lint这个包: https://golangci-lint.run gola ......
golangci-lint golangci 代码 工具 golang

Golang之数据库转换结构体工具table2struct

另外一个根据json生成对应结构体在线工具: https://mholt.github.io/json-to-go/ 安装: go get github.com/gohouse/converter 或者下载对应平台的二进制文件 https://github.com/gohouse/converter ......
table2struct 2struct 结构 数据库 工具

P3017 [USACO11MAR] Brownie Slicing G

# P3017 [USACO11MAR] Brownie Slicing G [P3017 [USACO11MAR\] Brownie Slicing G - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)](https://www.luogu.com.cn/problem/P3017 ......
Brownie Slicing P3017 USACO 3017

Golang 高效并发安全的字节池

记录一下,这里学的BytePoolCap, 和sync.Pool 总之就是这个BytePoolCap比sync.Pool快一些,目前不会测试,后面测试了再来填坑。 ``` package main import ( "fmt" ) func main() { // var bpool BytePoo ......
字节 Golang

Golang 语言学习路线

学习Go语言是一个很好的选择,它具有高效的编译速度、强大的并发支持和简洁的语法。适用于初学者的Golang学习路线: **1. 学习基础:** - 安装Go:从官方网站下载并安装Go语言的最新版本。 - Hello, World!:学习如何编写一个简单的Hello World程序,并运行它。 - 基 ......
语言学习 路线 语言 Golang

初识Go(Golang)语言(2)

# 初识Go(Golang)语言(2) ## Go开发工具的使用 ~~~Go 1.vscode使用直接下载vscode(免费软件),在内部下载golang语言插件,即可使用。 2.JetBrains全家桶之(Goland[IDE]),永久免费"试用"。下方仅供参考,过期了就过期了。一般所有去哪佳通都 ......
语言 Golang Go

让 GPT-4 来修复 Golang “数据竞争”问题(续) - 每天5分钟玩转 GPT 编程系列(7)

[TOC] ## 1. 我以为 我以为 [GoPool](https://github.com/devchat-ai/gopool) 这个项目会昙花一现,从此在 GitHub 上封尘。 > 关于 GoPool 项目诞生的故事:[《仅三天,我用 GPT-4 生成了性能全网第一的 Golang Work ......
GPT 数据 Golang 问题

《高级程序员 面试攻略 》优化golang程序性能的手段

优化 Go 程序的性能可以通过多种手段来实现。以下是一些常用的优化技术和方法: 1. 并发和并行:利用 Go 语言的轻量级协程(Goroutine)和并发原语,将程序中适合并发执行的任务并行化,以充分利用多核处理器的能力。使用适当的同步机制,如通道(Channel)和互斥锁(Mutex),确保并发操 ......
程序 程序员 手段 性能 攻略

《高级程序员 面试攻略 》golang协程调度 通俗拟人解释

当谈到 Go 语言中的协程调度时,可以将其形象地比喻为一个聪明而高效的调度器,它负责管理和分配协程的执行。 这个调度器就像是一个忙碌的主人,负责监管和安排协程们的工作。它有着敏锐的观察力,时刻关注每个协程的状态和需求。当一个协程请求执行时,调度器会立即为它分配一定的执行时间,并将其放入执行队列中。 ......
拟人 程序员 攻略 程序 golang

让 GPT-4 来修复 Golang “数据竞争”问题 - 每天5分钟玩转 GPT 编程系列(6)

[TOC] ## 1. Golang 中的“数据竞争” 我在上个月发过一篇[《跟着 GPT-4 从0到1学习 Golang 并发机制(三)》](https://www.danielhu.cn/from_0_to_1_go_concurrency_with_gpt_3/#23-race-detecto ......
GPT 数据 Golang 问题

Go 语言切片(Slice)

切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大。 定义 var identifier []type var slice1 []type = make([]type, len) slice1 := make([]type, len) make([]T, length, capacit ......
语言 Slice Go

Golang之旅——Defer

## defer 首先来看一下官方的解析: 1. A deferred function’s arguments are evaluated when the defer statement is evaluated. 2. Deferred function calls are executed ......
之旅 Golang Defer