前言:刚刚开始学习区块链,随手记录了一些关于go和solidity的基础知识,不当之处敬请指正。
1、全局变量必须首字母大写,才能在外部包中使用
2、函数定义中的变量 称为形式参数
3、在函数体内声明的变量称为局部变量,一般形式下使用关键var声明
4、包声明关键字:package
5、被private修饰的成员变量,只能被该类自身所访问和修改
6、Go浮点类型float64默认值为0
7、solidity的循环方式有for 、while 、do......while。while循环判断条件一般是程序结果,for循环判断条件一般是非程序结果。
8、stack(栈)的存储成本最低,memory成本低于storage(存储)通常存储临时数据,storage上的数据可以永久存储。
9、接口正确表示:interface test{ function test() external returns (uint256);}
10、solidity中变量命名示例:uint text_name;
11、可以进行输入输出示例:function test(uint _a,uint _b) public returns(uint _sum){}
12、字节类型转换成字符串类型使用API:string(str[:])
13、字符串类型转换为int整数使用API:strconv.Atoi(num)
14、字符串类型转换为字节类型使用API:[]byte(str)
15、整数int转换为字符串类型使用API:strconv.Itoa(num)
- 一个指针变量指向了一个值的内存地址
- go语言数组是具有相同类型的一组长度固定的数据序列
- 切片(slice)是对数组一个连续片段的引用,所以切片是一个引用类型
- 一个函数可以没有返回值,也可以有一个返回值,也可以有多个返回值
- go语言数组遍历有两种形式,一种使用for...range循环遍历数组,一种是使用常规for循环遍历数组。
- map是一种无序的基于key-value的数据结构,用于存储一系列无序的键值对
- 一个函数被调用后,返回给调用处的执行结果,叫做函数的返回值
- 函数是go里面的核心设计,它通过关键字func来声明
- 有一种自定义数据类型可以封装多个基本数据类型,这种数据类型叫结构体
- 结构体访问成员使用点号.操作符
- GO函数支持不定数目的形式参数,不定参数声明使用argumentName ...Type的语法格式
- 结构体的嵌套,一个结构体中可以嵌套包含另一个结构体或结构体指针
- 数组元素可以通过索引下标(位置)来读取或者修改元素数据
GO语言关键词
-
func:定义函数和方法
-
var和const:变量和常量的声明
-
struct:用于定义抽象数据类型
-
map:用于声明自定义类型
条件语句if
-
可以没有else保留字
-
由一个布尔表达式后紧跟一个或多个语句组成
-
在布尔表达式为true时,其后紧跟的语句块执行,如果为false则不执行。
-
需要开发者通过指定一个或多个条件,并通过测试条件是否为true来决定是否执行指定语句,并在条件为false的情况下执行另外的语句。
-
可以通过&&逻辑与,||逻辑或,!逻辑非,来判断表达式
GO语言中包文件引用
- 包的引用路径有两种写法,绝对路径与相对路径
- 需要使用import关键字导入使用的包
- 在导入包时,可以为导入的包设置别名,可以使用匿名引用格式
GO语言中字符串类型
- 字符串是一个或多个字符(字母,数字,符号)的序列
- 字符串是一种值类型,且值不可变
- 字符串所占的字节长度可以通过函数len()来获取
Go 语言包下的函数方法调用
- 同一个包中调用函数,函数名定义没有特定要求
- 不同包调用函数或者变量时,函数名定义必须以大写字典开头
- GO不同文件夹(包)之间的相互引用靠包来实现,也就是import
GO语言结构体的定义
- GO语言中通过结构体(struct)来实现面向对象
- 结构体是一种聚合的数据类型,是由零个或多个任意类型的值聚合成的实体
- GO语言提供了一种自定义数据类型,可以封装多个数据类型,这种数据类型叫结构体(struct)
- 每个值称为结构体的成员
GO语言切片的声明方式示例
slice:=make([]int,5)
slice:=make([]int,5,10)
slice:=[]int{1,2,3,4,5}
slice:=[]int{4:1}
关于Go格式化输出
- Print系列函数会将内容输出到系统的标准输出
- Print函数会直接输出内容
- Println函数会在输出内容的结尾添加一个换行符
- Printf函数支持格式化输出字符串
Go 语言不定函数参数
- 所有的不定参数类型必须是相同的
- 不定参数必须是函数的最后一个参数
- 不定参数在函数体内相当于一个切片,对切片的操作同样适合对不定参数的操作
- 切片也可以作为参数传递给不定参数,切片名称后面要加上“...”