-
基本类型
-
bool
优先级:&& > || * > +
布尔型不可强制转为整型,也不可以转为其他类型
-
string
-
int int8 int16 int32 int64
Int8(-128 - 127). uint8(0 - 255)
通常 int 类型的处理速度也是最快的
0x%x
十六进制,%d
十进制, -
uint8 16 32 64 uintptr
uintptr无符号整数类型,没有指定具体的 bit 大小但是足以容纳指针,uintptr 类型只有在底层编程时才需要,特别是 Go 语言和 C语言 函数库或操作系统接口相交互的地方
程序逻辑对整型范围没有特殊要求,但是 在二进制传输、读写文件的结构描述时,为了保持文件的结构不会受到不同编译目标平台字节长度的影响,不要使用 int 和 uint
-
byte // uint8的别名
-
rune //int32的别名 代表一个unicode码
-
-
float32 float64
fmt.Printf("%f\n", math.Pi). fmt.Printf("%.2f", math.Pi)
-
complex64(32位实数和虚数) complex128
complex128 为复数的默认类型,
name := complex(x, y)
x为实部,y为虚部real(z)获取实部 imag(z) 获取虚部
-
-
申明 标准格式 批量格式 简短格式
:=
声明时左值变量必须是没有定义的变量var conn net.Conn var err error conn, err = net.Dial("tcp", "127.0.0.1:8080") // 在多个短变量声明和赋值中,至少有一个新声明的变量出现在左值中,即便其他变量名重复声明的,编译器也不会报错 conn, err = net.Dial("tcp", "127.0.0.1:8080") conn2, err = net.Dial("tcp", "127.0.0.1:8080")
-
匿名变量
不占用内存空间,也不会分配内存,匿名变量与匿名变量之间也不会因为多次声明而无法使用。
func getData() (int, int) { return 1, 2 } func main() { a, _ := getData() _, b := getData() fmt.Println(a, b) // 1,2 }
-
变量的作用域
-
局部变量
局部变量名和全局变量名可以相同,局部变量名优先级更高
-
全局变量
全局变量声明必须以var关键字开头,如果想要在外部包中使用全局变量的首字母必须大写
-
形式参数
只在函数调用时生效,调用结束时销毁,未被调用时,行参不占用实际的存储单元,也没有实际值
-
-
go语言指针
go具有控制数据结构指针的能力,但是却不能进行指针运算。
指针在golang中可以分为两个核心概念:
- 类型指针:可以对这个指针类型的数据进行数据,也可以使用指针传递数据,而无需拷贝数据,但不能进行偏移和运算。
- 切片,由指向起始元素的原始指针、元素数量和容量组成
对比C语言的指针,指针是其保持高性能的根本所在,在操作大数据块时方便快捷,故此是操作系统使用的是C及其指针特性编写。
使用new()关键字也可以创建指针,创建过程会分配内存,被创建的指针指向默认值。
-
go语言变量的生命周期
堆:存放进程执行中被动态分配的内存段,大小不固定
栈:也即堆栈,用来存放程序暂时创建的局部变量,如函数大括号内的变量。
-
go常量
const ( a = .12 b = 123 ) // 声明多个常量
iota常量生成器
type weekday int const ( sunday weekday = iota monday // 1 )
无类型常量
var x float32 = math.Pi // math.Pi 无类型的浮点数常量,可以直接用于任意需要浮点数或复数的地方
-
类型别名
// 类型别名和类型定义 type IntAlias = int // 给int取IntAlias的别名 type newInt int // 声明newInt为int类型
非本地类型不能定义方法
在结构体成员嵌入时使用别名
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Swift语法快速入门(一)之 Swift基础语法
- 在ES6中使用扩展语法有什么好处?它与rest语法有什么不同?
- Python 基础语法
- JPQL 语言语法
- reStructuredText简明语法
- Golang:语法
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。