随笔分类 - go语言
摘要:package main import "fmt" type Sex int // 枚举 const ( SexMan Sex = iota SexWoman SexUnkonw ) func (s Sex) String() string{ switch s { case 0: return "男
阅读全文
摘要:goland版本:2020 go版本:1.20.3最新版 在goland中配置GOROOT时找不到sdk 解决版本: > cd /usr/local/go # 我本地go的安装目录 > cd /src/runtime/internal/sys > vi zversion.go package sys
阅读全文
摘要:方法的接收者 package main import ( "fmt" ) type Person struct { Name string Age int } func (p Person) walking(){ fmt.Println("我是值类型方法") fmt.Printf("%s, 今年%d
阅读全文
摘要:消息队列中间件 消息队列中间件,也可以称为消息队列或者消息中间件。它一般有两种传递模式:点对点模式和发布/订阅模式。点对点模式是基于队列的,消息生产者发送消息到队列,消息消费者从队列中接收消息,队列的存在使得消息的异步传输成为可能。 发布订阅模式定义了如何向一个内容节点发布和订阅消息,这个内容节点称
阅读全文
摘要:grpc让我们可以像本地调用一样实现远程调用,对于每一次的RPC调用中,都可能会有一些有用的数据,而这些数据就可以通过 metadata来传递。metadata是以key-value的形式存储数据的,其中key是string类型,而value是[]string,即一个字符串 数组类型。metadat
阅读全文
摘要:概述 go语言中的MPG线程模型对两级线程模型进行了一定程度的改进,使它能够更加灵活的进行线程之间的调度。 它由3个主要模块构成,如下图: MPG的3个主要模块以及功能,我们通过下表所示。 | 模块 | 功能说明 | | | | | Machine | 一个Machine对应一个内核线程,相当于内核
阅读全文
摘要:linux下go版本安装(1.18.1版本) >>> wget https://go.dev/dl/go1.18.1.linux-amd64.tar.gz >>> tar xzvf go1.18.1.linux-amd64.tar.gz -C /usr/local >>> mkdir /data/g
阅读全文
摘要:user.proto syntax = "proto3"; package demo; option go_package = "./pb"; //指定go_out对应的目录 message UserInfo{ int32 UserType = 1; string UserName = 2; str
阅读全文
摘要:context包 context包介绍 在go语言中,每个独立调用一般都会被单独的协程处理。但在处理一个请求时,往往可能需要在多个协程之间进行信息传递,甚至包括一层层地递进顺序传递,而且这种信息往往具有一定的场景状态。如一个请求可能衍生出各个协程之间需要满足一定的约束关系,如登录状态,前一个协程
阅读全文
摘要:server.go package main import ( "bufio" "fmt" "io" "net" "time" ) func tcpPipe(conn *net.TCPConn) { ipStr := conn.RemoteAddr().String() defer func() {
阅读全文
摘要:反射 package main import ( "fmt" "reflect" ) type Student struct { name string } type MyInt int func main() { /*Type的主要方法 Kind()返回一个常量,表示具体类型的底层类型 Elem(
阅读全文
摘要:在range语句中生成的数据的值是真实集合元素的副本,它们不是原有元素的引用。这意味着更新这些值将不会 修改原来的数据,同时也意味着使用这些值的地址将不会得到原有数据的指针。 package main import "fmt" func main(){ data := []int{1,2,3} fo
阅读全文
摘要:From golang:1.16-alpine3.13 AS builder WORKDIR /app COPY . . RUN go build -o main main.go From alpine:3.13 WORKDIR /app COPY --from=builder /app/main
阅读全文
摘要:package main import ( "fmt" "github.com/gin-gonic/gin" ) func func1(c *gin.Context){ fmt.Println("func1") } func func2(c *gin.Context){ fmt.Println("f
阅读全文
摘要:1.创建lauch.json文件 2.然后在项目目录中会自动创建.vscode的目录 3.在.vscode目录下创建settings.json项目独立配置文件 4.在settings.json中写入 { // 这个是写go测试用例时,测试用例代码中需要用的环境变量从下面的文件中获取 "go.test
阅读全文
摘要:1.文件>首选项>设置>搜索Test Flags 2.选择在settings.json中编辑 3.添加以下内容 "go.testFlags":[ "-v" ],
阅读全文
摘要:参考文档 // 文档 https://github.com/golang-jwt/jwt https://pkg.go.dev/github.com/golang-jwt/jwt@v3.2.2+incompatible#example-NewWithClaims-CustomClaimsType h
阅读全文
摘要:package main import "UTF-8" func main(){ // 统计Uncode字符数量 fmt.Println(utf8.RuneCountInString("忍者")) // 2 fmt.Println(utf8.RuneCountInString("聋人出鞘,fight
阅读全文
摘要:func dirents(dir string) []os.FileInfo{ entries, err := ioutil.ReadDir(dir) // 读取目录并返回排好序的文件以及子目录名 if err != nil{ fmt.Fprintf(os.Stderr, "du1: %v\n",
阅读全文
摘要:channel 如果说goroutine是并发体的话,那么channels则是他们之间的通信机制。一个channel是一个通信机制,它可以让一个goroutine通过它给另一个goroutine发生值信息。每个channel都有一个特殊的类型,也就是channels可发送数据的类型。一个可以发送in
阅读全文