go语言学习总结
go语言学习总结:
1.关键字
break | default | func | interface | select |
case | defer | go | map | struct |
chan | else | goto | package | switch |
const | fallthrough | if | range | type |
continue | for | import | return | var |
2.预留标识符
append | bool | byte | cap | close | complex | complex64 | complex128 | uint16 |
copy | false | float32 | float64 | imag | int | int8 | int16 | uint32 |
int32 | int64 | iota | len | make | new | nil | panic | uint64 |
println | real | recover | string | true | uint | uint8 | uintptr |
3.派生类型
讲解链接:https://blog.csdn.net/travelerl/article/details/102558666
4.sizeof():
C中的sizeof("String"),返回字符串在内存中的占用空间;
go中的unsafe.sizeof(),{golang中的sring内部实现由两部分组成,一部分是指向字符串起始地址的指针,另一部分是字符串的长度,两部分各是8字节,所以一共16字节}
因为对Go的内存处理机制,所以对于sizeof的使用,暂时先放一放
5.iota:iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。
6.go可以自加自减:但是不能 b:=a++
7.go拥有短路逻辑
8.运算符优先级:&a:内存地址(*a:定义指针变量) ;0&^0:异或运算
优先级 | 运算符 |
---|---|
5 | * / % << >> & &^ |
4 | + - | ^ |
3 | == != < <= > >= |
2 | && |
1 | || |
9.Go语言select语句:随机的Swtich语句,随机运行case,有可执行case责运行,无则阻塞直到有可执行的case,再运行。
select 会循环检测条件,如果有满足则执行并退出,否则一直循环检测。
10.定义函数,如果输入参数必须指定类型;如果一个输入参数找不到类型,就会往后找:
对:a,b int,c string ,a,b,c int;错:a,b int,c ;
func function_name( [parameter list] ) [return_types] {
函数体
}
11.函数使用值传递,修改函数内的输入参数,其main()里无影响;
如果使用引用传递,那么参数需要传入内存地址,即把”指针“当做一个值来传递。
12.go支持交叉复制:x,y=y,x
13.go不支持三目运算符:go的思想"一种事情有且只有一种方法完成”
14.Go语言闭包函数:
(函数里面套函数)
func getSequence() func() int {
i:=0
return func() int {
i+=1
return i
}
}
15.go语言函数和方法
对于普通函数:接收者(函数参数)为值类型时,不能将指针类型的数据直接传递,反之亦然。
func function_name([parameter list]) [return_types] {
函数体
}
对于方法(如struct方法): 接收者为值类型时,可以直接用指针类型的变量调用方法,反之亦然。
func (variable_name variable_data_type) function_name() [return_type]{
/* 函数体*/
}
Go 语言中同时有函数和方法。一个方法就是一个包含了接受者的函数,接受者可以是命名类型或者结构体类型的一个值或者是一个指针。所有给定类型的方法属于该类型的方法集。
因为GO语言没有面向对象,所以使用方法?
16.go语言”作用域“
定义的常量、变量、类型、接口、结构、函数等的名称是大写字母开头表示能被其它包访问或调用(相当于public),非大写开头就只能在包内
使用(相当于private,变量或常量也可以下划线开头)
17.针变量通常缩写为 ptr,空指针的值为nil
18.在main()外的函数和方法,无法获得内存地址,因为内存地址动态生成?
我在尝试创建一个数组,并将函数放进数组内;也可能是我调用的方法不对,之后再做尝试。
或者应该尝试用结构体?
19.数组Book,添加了book,修改book的值,Book里的book值不会被修改(append应该是复制内存)
原文地址:https://www.cnblogs.com/ygy1997/p/11752030.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- python第十二课——for in循环
- Linux系统实战——批量无人值守安装操作系统
- python第十三课——嵌套循环
- python第十四课--排序及自定义函数
- python第十四课--排序及自定义函数之案例一:选择排序
- python第十四课--排序及自定义函数之案例二:冒泡排序
- python第十四课--排序及自定义函数之自定义函数(案例一)
- python第十四课--排序及自定义函数之自定义函数(案例二)
- python第十四课--排序及自定义函数之自定义函数(案例三)
- python第十四课--排序及自定义函数之自定义函数(案例四)
- python第十四课--排序及自定义函数之自定义函数(案例五)
- python第十五课——全局变量and局部变量
- python第十六课——ascii码
- python第十六课——外部函数and内部函数
- python第十七课——列表生成式