go-gprc gprc go

kafka-es.go

package es import ( "context" "encoding/json" "fmt" "kafka/mongo" "log" "os" "github.com/olivere/elastic" ) var client *elastic.Client var host = "htt ......
kafka-es kafka es go

kafka-mongo.go

package mongo import ( "context" "fmt" "log" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo ......
kafka-mongo kafka mongo go

VSCode - go error: gopls was not able to find modules in your workspace

gopls was not able to find modules in your workspace. When outside of GOPATH, gopls needs to know which modules you are working on. You can fix this b ......
workspace modules VSCode error gopls

java学go

数组和切片的区别? 数组是同一种数据类型元素的集合,数组在定义时需要指定长度和元素类型: 例如:[3]int [3]int{1,2,3} [...]int{1,2,3} 如果数组作为函数的参数,实际传递的是一份数组的拷贝,而不是数组的指针,在函数中修改数组元素不会影响到原始数组。 切片更加常用,它是 ......
java

go 时间错误

invalid operation: n * time.Second (mismatched types int and time.Duration) package main import "time" func main() { n := 1 time.Sleep(n * time.Second ......
错误 时间 go

go panic

panic可能原因 1. 空指针2. 直接调用panic函数3. 数组越界4. map读写并发(recover不能恢复) core dump程序出现段错误时出现的错误文件,通过该文件确认错误的位置。程序因段错误异常终止时打印堆栈信息// 开启core dump功能,不限制core文件大小ulimit ......
panic go

go strings.Builder

字符串拼接和strings.Buffer缺点 Go里面的字符串是常量,对字符串的修改会重新申请内存地址。虽然bytes.Buffer避免了字符串修改过程中的内存申请,但是最后从[]byte转成字符串时会重新内存申请。从Go 1.10开始,提供了性能更好的方法strings.Builder,与byte ......
Builder strings go

go map

map内存模型 // A header for a Go map. type hmap struct { // 元素个数,调用 len(map) 时,直接返回此值 count int flags uint8 // buckets 的对数 log_2 B uint8 // overflow 的 buc ......
map go

学的java,工作用的go?

学的java,找的java开发,进了公司却在使用go。 第一天让拉代码,我以为我拉的是java代码,没想到却是go。当时慌死了,我只听说过go,连hello world都没有go写过。既来之,则安之,我接下来就是装goland,配环境变量,好在代码跑起来了,这个项目使用go+Gin来进行开发,甚至连 ......
java go

go context

使用场景 在协程之间传递上下文 context接口 type Context interface { // 返回绑定当前context的任务取消的截止时间 // 如果没有设定期限,将返回ok == false Deadline() (deadline time.Time, ok bool) // 绑 ......
context go

go目录结构和交叉编译

环境变量 GOROOT:GO语言的安装路径GOPATH:项目目录GOBIN:执行go install go文件时,生成可执行文件的路径,通常设置为GOPATH/bin。 GOPATH目录结构 GOPATH/src目录下放源代码文件。GOPATH/pkg目录下放执行go install 目录名后生成的 ......
结构 目录

go单元测试显示测试用例代码覆盖率

执行单个目录所有测试用例并生成覆盖率 go test -gcflags=all=-l -coverprofile=$GOPATH/bin/c.out . go tool cover -html=$GOPATH/bin/c.out -o=$GOPATH/bin/tag.html 执行单个测试用例并生成 ......
覆盖率 单元 代码

go垃圾回收

三色标记法 三色标记法配合写屏障和辅助GC。1.初始状态所有对象都是白色。2.从根出发扫描,将引用的对象标记为灰色。3.分析灰色对象是否引用了其他对象,自身标记为黑色,将它引用的其他对象标为灰色4.重复步骤3,直到灰色对象队列为空。此时白色对象即为垃圾,进行回收。 写屏障:每一轮GC开始时会初始化屏 ......
垃圾

GO协程

goroutine 协程本意是coroutine,go协程是goroutine。线程分为内核态线程(内核线程)和用户态线程(协程)。线程由CPU调度是抢占式的,协程由用户态调度是协作式的(主动让出才执行下一个)。 N:1(N个用户线程绑定1个内核线程) 例子:python的gevent优点:协程切换 ......

Go并发编程实战 第三章 并发编程综述

> 经过前两章的基本认识,终于开始并发编程了。 # 并发编程基础 ## 基本概念 1. 串行和并行程序:串行程序特指只能被顺序执行的指令列表,并发程序则是可以被并发执行的两个及以上的串行程序的综合体。 2. `并发和并行`: 并行是指两个或者多个事件在**同一时刻**发生;而并发是指两个或多个事件在 ......
实战 第三章

说说 Go 语言的坑(二)

上一篇文章 [说说 Go 语言 for-range 的坑](https://imlht.com/archives/187/) 说的是 for-range 的,工作中,其实还是遇到蛮多奇奇怪怪的问题,这里也顺便整理了一下,就当作是续集:) 先继续看 for-range 的另一个坑: #### 下面代码 ......
语言 Go

go text模板

package installimport ( "bytes" "fmt" "strings" "text/template" "github.com/fanux/sealos/pkg/logger" "sigs.k8s.io/yaml")var ConfigType stringfunc setK ......
模板 text go

go学习笔记

# 包 go 由包组织(即一个文件夹,文件夹的名字对应包的名字,文件夹可以包含一个多个 go 源文件),每个源文件用`packge 包名`在开头声明 main 包:定义一个独立可执行程序,总是程序开始的地方 **包的导入** 通过`import 包名`或`import (多个包名)`来导入包 包名重 ......
笔记

go 服务端分层框架设计

框架分为四层。models,controllers,repositories,services 以User为例 1、controller示例 ``` package controllers import ( "appserver/services" "github.com/gin-gonic/gin ......
框架 go

go 给一个切片,将其写入到一个单链表中

package main import "fmt" // 功能:实现一个单链表(给一个切片,将其写入到一个单链表中) type Node struct { Value int Next *Node } func create(slice []int) *Node { if len(slice) == ......
go

kafka-consumer.go

package consumer import ( "fmt" "sync" "github.com/Shopify/sarama" ) type CRead func() string func Run() { var wg sync.WaitGroup consumer, err := sara ......
kafka-consumer consumer kafka go

kafka-producer.go

package producer import ( "fmt" "github.com/Shopify/sarama" ) type CRead func() string func Run(cRead CRead) { config := sarama.NewConfig() config.Pro ......
kafka-producer producer kafka go

kafka-main.go

package main import ( "bufio" "kafka/consumer" "kafka/producer" "os" "strings" ) var inputReader *bufio.Reader func init() { inputReader = bufio.NewRe ......
kafka-main kafka main go

【Go】基础

## 关于项目新建 ### 使用path新建 * 新建项目位置必须在go目录下 > 先查找gopath/src这个目录之下,在查找goroot/src这个目录之下,如果都没有则报错 ![image](https://img2023.cnblogs.com/blog/1282163/202307/12 ......
基础

Go特殊的语言特性

> 摘要:本文由葡萄城技术团队于博客园原创并首发。转载请注明出处:[葡萄城官网](https://www.grapecity.com.cn/),葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 # 前言 本文主要通过值传递和指针、字符串、数组、切片、集合、面向对象(封装、继承、抽象)和 ......
特性 语言

Go并发编程实战 第一章 初识Go语言

第一章基本上就是讲解Go的历史、如何安装GO、Go的基本概念和一些常用的命令。由于学习Go也有一段时间了,可以看出书中有一些概念其实不完全正确的,特别是gopath部分。 大概知识点如下: 1. 工作区的概念:早期Go确实建议把所有的工程代码放在`GOPATH`环境变量下,这个目录是你自己设置的,可 ......
实战 语言

Go 语言的 nil 能比较自己吗

## nil 是什么? 可以看看官方的描述,在 buildin/buildin.go 里: ```go // nil is a predeclared identifier representing the zero value for a // pointer, channel, func, in ......
语言 nil Go

Go并发编程学习

> 想起来还不是很熟悉Go的并发编程,趁现在有空学一下。找了一些资料,感觉也不是很好,最终选择看这本书(看到一些大佬推荐的) > 本章作为这个书的目录部分索引,会一直更新到这本书看完,算是立个flag吧。 > 2023-7-12: 更新第一章初识Go语言 # Go并发编程实战 ![](https:/ ......

GoLand没有go mod模式选项的问题

代理需要命令行进行全局设置 使用阿里云代理: go env -w GO111MODULE=on go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/ ......
模式 GoLand 问题 mod

Go--统计数组中重复的元素及重复次数

代码: package main import ( "fmt" ) func main() { //创建有重复数值的数组 a1 := []int{1, 2, 3, 1, 4, 5, 2} a2 := []string{"t1", "t2", "t1", "t3", "t5", "t3"} //创建m ......
数组 元素 次数 Go