go入门笔记

区块链研发工程师
Go服务器端/游戏软件工程师
golang分布式/云计算软件工程师

学习方向

先know how ,在know why

Golang的语言特点

注意事项

以"go" 为扩展名

执行入口是main()函数

严格区分大小写

每个语句后面不带分号

定义的变量和import的包如果没有使用到,代码不能编译通过

shift+tab整体向左移动

使用一个表达式形容Go语言: Go=C+Python

print() println() //print+line printf() //print+format %T , 打印变量的数据类型 %d , 打印整数,十进制 %f , 打印浮点,小数 %t , 打印字符串 %s , 打印字符串 %v , 原样输出 %c , 打印对应的unicode字符 %p , 打印地址 变量的定义

var 变量 数据类型

变量名=赋值

缩写成一行

var 变量名 数据类型=赋值

类型推断

var 变量名=赋值

省略var

变量: =赋值

b:=2 //简短声明不支持全局变量

在同一区域同一数据类型内不断变化的

var num int //默认为0 跟js差不多 undefined

_ 只写,不能读

常量

const 常量 数据类型=赋值

const 常量名=赋值

所有的字母大写

如果私有 前加小写字符c

一组常量中,如果某个常量没有初始值,那么默认和上一行一致

iota:计数器 默认为0

const( e=iota f g ) //每当定义一个常量累加1 整型

go入门笔记

go入门笔记

go入门笔记

int uint 和操作系统有关

浮点

float32单精度 float64 双精度

字符串

一个字符byte

Go语言字符使用UTF-8 英文字符1个字节 汉字3个字节

字符串一旦赋值了,就不能在修改

反引号是直接输出``

布尔(bool)

只能取true false不能取0,1 占用一个字节

Go在不同类型的变量之间赋值是需要显式转换,也就是说Golang中数据类型不能自动转换

var i int32 = 100 var n1 float32 = float32(i) var n2 int8 = int8(i) var n3 int64 = int64(i) fmt.Print("i=%v n1=%v n2=%v n3=%v", i, n1, n2, n3) %v 需要转换的变量

基本数据类型 的默认值

go入门笔记

基本类型转string类型

fmt.Sprintf 会返回转换后的字符串

strconv.FormatFloat

strconv.FormatInt

strconv.formatbool

string类型转基本数据类型

strconv ParseInt() ParseFloat() ParseBool() ParseUint() n1,_=strconv.ParseInt(str2,10,64) f1,_=strconv.ParseFloat(str3,64)

算术运算符

对于除号"http://www.likecs.com/" 只保留整数部分而舍弃小数部分

Golang的自增自减只能当作一个独立语言使用

例如 i++ i-- ++和--只能写在变量的后面,不能写在变量的前面

go 语言明确不支持三元运算符

键盘输入语句

fmt.Scanln() fmt.Scanf()

fmt.scanf可以按照指定的格式输入

fmt.Scanf("%s,%d,%f,%t",&name,&age,&sal,&ispass)

通过&变量保存数据

fmt.Scanln(&name)

if x>y { fmt.Println("true") } if else if /*希望函数内的变量能改变函数外的数值,可以传入变量的地址& 函数内以指针的方式操作变量*/ func test03(n1 *int) { *n1=*n1+10 fmt.Println("test03 n1=",*n1) } func main(){ num:=20 test03(&num) fmt.Println("main() num",num) }

go函数不支持重载

自定义数据类型

type 自定义数据类型 数据类型

type myInt int var num1 myInt var num2 int num1=400 num2=int(num1) //这里依然需要显示转换,go认为myInt和int两个类型

args是slice切片,通过args[index] 可以访问各个值

func sum(n1 int,args... int)int{ sum:=n1 for i:=0;i<len(args);i++{ sum+=args[i]//args[0] 表示取出args切片的第一个元素之 } return sum } func main(){ res:=sum(1,2,3,4,5,5,6,6) fmt.Println("res=",res) }

每一个源文件都可以 包含一个init函数,init会在main函数前调用

执行顺序

go入门笔记

bufio包

reader:=NewReader(os.Stuio) reader.ReadLine()====>[]byte reader.ReadString('\n')-->String

内置包

math包提供数学计算的函数
math.Abs()

go语言特有

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgwdwj.html