基础语言小细节 | 青训营笔记

58 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记

package main 代表的是一个可运行的应用程序

main 应用程序的主入口

变量

var 变量名 类型 = 表达式 变量必须使用

变量名:=表达式

控制语句

每个条件分支(if或者else)中的大括号是必须

if紧跟的大括号{不能独占一行

else前的大括号}也不能独占一行

条件语句可以有简单的表达式语句用**;**隔开

集合类型

在新建slice时最好新slice长度和容量一样,这样追加操作的时候,会生成新底层数组从而和

原来数组分开,就不会因为公用底层数组导致修改内容时影响多个切片。

函数和方法

函数名称首字母小写代表私有函数,只有在同一个包中才可以被调用

函数名称首字母大写代表公有函数,不同的包也可以调用

闭包:在函数定义的内部函数。可以使用外部函数的变量等

func main() {
   cl := colsure()
   fmt.Println(cl())
   fmt.Println(cl())
   fmt.Println(cl())
}
func colsure() func() int {
   i := 0
   return func() int {
      i++
      return i
   }
}

方法必须要有一个接受者,这个接收者是一个类型,这样方法就和这个类型绑定在一起,称为这个类型的方法

并发

channel内部使用了互斥锁来保证并发的安全

进程

每个进程都有一些属性,os 包提供了一些函数可以获取进程属性。

每个进程都会有一个进程 ID,可以通过 os.Getpid 获得。同时,每个进程都有创建自己的父进程,通过 os.Getppid 获得。

Unix 中进程都有一套数字表示的用户 ID(UID) 和组 ID(GID),有时也将这些 ID 称之为进程凭证。Windows 下总是 -1。

实际用户 ID(real user ID)和实际组 ID(real group ID)确定了进程所属的用户和组。登录 shell 从 /etc/passwd 文件读取用户 ID 和组 ID。当创建新进程时(如 shell 执行程序),将从其父进程中继承这些 ID。

可通过 os.Getuid() 和 os.Getgid() 获取当前进程的实际用户 ID 和实际组 ID;