摘要:
疑问 请问main调用GetUserInfo后返回的&User{...}。这个变量是分配到栈上了呢,还是分配到堆上了? package main type User struct { ID int64 Name string } func GetUserInfo() *User { return & 阅读全文
摘要:
问题 type Part1 struct { a bool b int32 c int8 d int64 e byte } 在开始之前,希望你计算一下 Part1 共占用的大小是多少呢? func main() { fmt.Printf("bool size: %d\n", unsafe.Sizeo 阅读全文
摘要:
为什么要控制goroutine的数量? 在我们开发过程中,如果不对goroutine加以控制而进行滥用的话,可能会导致服务整体崩溃。比如耗尽系统资源导致程序崩溃,或者CPU使用率过高导致系统忙不过来。 用什么方法控制goroutine的数量? 尝试 chan func main() { userCo 阅读全文
摘要:
embed 是什么 embed是在Go 1.16中新加入的包。它通过//go:embed指令,可以在编译阶段将静态资源文件打包进编译好的程序中,并提供访问这些文件的能力。 为什么需要 embed 包 在以前,很多从其他语言转过来Go语言的同学会问到,或者踩到一个坑。就是以为Go语言所打包的二进制文件 阅读全文
摘要:
新建 创建一个新的 git 版本库。这个版本库的配置、存储等信息会被保存到.git 文件夹中 # 初始化当前项目 $ git init # 新建一个目录,将其初始化为Git代码库 $ git init [project-name] # 在指定目录创建一个空的 Git 仓库。运行这个命令会创建一个名为 阅读全文
摘要:
前言 数据竞争是并发情况下,存在多线程/协程读写相同数据的情况,必须存在至少一方写。另外,全是读的情况下是不存在数据竞争的。 Go语言中的 map 在并发情况下,只读是线程安全的,同时读写是线程不安全的。 如果map由多协程同时读和写就会出现 fatal error:concurrent map r 阅读全文
摘要:
package main import "fmt" type good struct { id int64 sum int64 } func main() { good1 := good{1, 3} good2 := good{1, 3} good := []good{} good = append 阅读全文
摘要:
package main import "fmt" func main() { p1 :=new(int) *p1 =1 fmt.Println("p1",p1) fmt.Println("*p1",*p1) fmt.Println("&p1",&p1) s1 := new([]int) s2 := 阅读全文
摘要:
简介 Go 语言又称 Golang,由 Google 公司于 2009 年发布,近几年伴随着云计算、微服务、分布式的发展而迅速崛起,跻身主流编程语言之列,和 Java 类似,它是一门静态的、强类型的、编译型编程语言,为并发而生,所以天生适用于并发编程(网络编程)。 目前 Go 语言支持 Window 阅读全文