go一些细节

本章节会不断补充

Go 教程_w3cschool

Go 语言教程 | 菜鸟教程 (runoob.com)

1.引用传递 ?值传递?

go语言没有引用传递,只有值传递。

和cpp不一样,cpp有值传递,指针传递,和引用传递;go只有前两种,但本质都是传值。

【Go 进阶】Go 语言到底是值传递,还是引用传递?(一)-阿里云开发者社区 (aliyun.com)

但是类型有引用类型和值类型。

  • 值类型:变量直接存储值,内存通常在栈上分配,栈在函数调用完会被释放。比如:intfloatboolstringarraysturct 等。
  • 引用类型:变量存储的是一个地址,这个地址存储最终的值。内存通常在堆上分配,通过GC回收。比如:slicemapchannelinterfacefunc 等。
    • 严格来说,Go 语言没有引用类型,但是我们可以把 map、chan、func、interface、slice 称为引用类型,这样便于理解。
    • 指针类型也可以理解为是一种引用类型

这里提到了堆和栈,简单介绍下内存分配中的堆和栈:

  • (操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。
  • (操作系统): 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。

2.go的几种类型转换

「GO」关于Golang中的类型转换 (baidu.com)

golang强制类型转换和类型断言_Golang_脚本之家 (jb51.net)

3.Docker和K8s是什么

10分钟看懂Docker和K8S - 知乎 (zhihu.com)

Docker是一个轻量级容器,可以允许很多程序在隔离的容器内运行不会相互影响,代替以往在虚拟机上运行项目的做法。

go一些细节_第1张图片

大家需要注意,Docker本身并不是容器,它是创建容器的工具,是应用容器引擎。

就在Docker容器技术被炒得热火朝天之时,大家发现,如果想要将Docker应用于具体的业务实现,是存在困难的——编排、管理和调度等各个方面,都不容易。于是,人们迫切需要一套管理系统,对Docker及容器进行更高级更灵活的管理

K8S,就是基于容器的集群管理平台,它的全称,是kubernetes。

一个K8S系统,通常称为一个K8S集群(Cluster)

这个集群主要包括两个部分:

  • 一个Master节点(主节点)
  • 一群Node节点(计算节点)

Master节点主要还是负责管理和控制。Node节点是工作负载节点,里面是具体的容器。


4.go语言定义变量时是否需要置0

go - Go语言中初始化和归零,new()和make()的区别 - IT工具网 (coder.work)

Go语言变量的初始化 (biancheng.net)

在C语言中,局部变量在声明时,并不会对变量对应内存区域进行清理操作。此时,变量值可能是完全不可预期的结果。开发者需要习惯在使用C语言进行声明时要初始化操作,稍有不慎,就会造成不可预知的后果。而全局变量会默认初始化。

go在声明变量时,自动对变量对应的内存区域进行初始化操作。每个变量会初始化其类型的默认值,例如:

  • 整型和浮点型变量的默认值为 0 和 0.0。
  • 字符串变量的默认值为空字符串。
  • 布尔型变量默认为 bool。
  • 切片、函数、指针变量的默认为 nil。
  • 当然,依然可以在变量声明时赋予变量一个初始值。

你可能感兴趣的:(go学习,一些小知识,学习,golang)