GO语言基础(一) | 青训营笔记

151 阅读3分钟

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

基础知识

包名与导入路径的最后一个元素一致

包中成员开头大写为public ,小写为private

文件夹名和包声明可以不一致,但是同一个文件夹下的包声明要一致

匿名引用 :正常情况下 使用的包进行引用,未使用的包不能引用。

匿名引用后就可以执行对应包的构造函数。

函数

函数返回值命名的意义,可以作为文档使用

直接返回,将返回已命名的值

短变量声明结构不能在函数外使用

函数也是值。它们可以像其它值一样传递。

函数值可以用作函数的参数或返回值。

函数的闭包***

Go 函数可以是一个闭包。闭包是一个函数值,它引用了其函数体之外的变量。该函数可以访问并赋予其引用的变量的值,换句话说,该函数被这些变量“绑定”在一起。

例如,函数 adder 返回一个闭包。每个闭包都被绑定在其各自的 sum 变量上。???

变量

变量没有明确的初始值时,将会被赋予相应的“零值”

在声明一个变量而不指定其类型时(即使用不带类型的 := 语法或 var = 表达式语法),变量的类型由右值推导得出。(类型推导) := 只能用来定义局部变量。

与 C 不同的是,Go 在不同类型的项之间赋值时需要显式转换。

常量不能用 := 语法声明。

与c++不同 Go 的 for 语句后面的三个构成部分外没有小括号, 大括号 { } 则是必须的

for 是 go中的while

for 一样, if 语句可以在条件表达式前执行一个简单的语句。该语句声明的变量作用域仅在 if 之内。

if 的简短语句中声明的变量同样可以在任何对应的 else 块中使用。

string

双引号“”

反引号`` :大段文字可自动换行,很长的字符串用这个;

(小技巧)在goland中在字符串中复制 字符串对其中的特殊字符会进行自动转义。

需要注意的点:在go里面len(string)计算的是字符串的字节长度与编码无关

若要获取字符数量,需使用对应的编码库来计算。此时是字符数量。

rune

rune 是可以理解为字符,但不是byte,本质是 int32, 一个rune为四个字节。

golang中没有char 类型, rune本质是什么?

byte

byte 类型本质为uint8 ,

类型总结

数字类型 需明确标注长度,有无符号;

不支持隐式类型转换,若类型不同则无法通过编译,如string只可以与string拼接;

rune 接近与其他语言的char类型。