go语⾔基础(main函数、数据类型)
go语⾔基础(main函数、数据类型)
1、Go语⾔介绍
Go语⾔是云计算时代的c语⾔
c和c++这类语⾔提供了很快的执⾏速度,⽽Rudy和python这类语⾔则擅长快速开发。Go语⾔则介于两者之间,不仅提供了⾼性能的语⾔,同时也让开发更快速
优势
1. 部署简单,可直接编译成机器码、不依赖其他库,部署就是扔⼀个⽂件上去就完成了
2. 静态类型语⾔(c是静态语⾔、python解释性语⾔),但是有动态语⾔的感觉,静态类型的语⾔就是可以在编译的时候检查出来隐藏的
⼤多数问题,动态语⾔的感觉就是有很多的包可以使⽤,写起来的效率⾼
3. 语⾔层⾯⽀持并发,这是Go最⼤的特⾊。可以充分的利⽤多核,很容易的使⽤并发
4. 内置runtime,⽀持垃圾回收GC,不需要⼿动释放
5. 关键字25个,⽀持:继承、重载、对象等
6. 丰富的标准库
7. 跨平台编译
8. 内嵌c⽀持
2、 main函数
1. go语⾔以包作为管理单位
2. 每个⽂件必须先声明包
3. 程序必须有⼀个main包(重要),没有程序⽆法编译
4. 程序要有⼀个⼊⼝函数main函数,并且有且只有⼀个,也就是说在liteide直接图形界⾯编译,⼀个⽂件夹只能有⼀个main函数
5. 左括号必须和函数同⾏
6. "hello world"⽤fmt.Println打印到屏幕,Println()会⾃动换⾏
7. // 和/* */注释,选中代码,按ctrl+\,注释和取消注释代码的快捷键
8. 会⾃动格式化
9. 语句结尾没有分号
10. 运⾏:ctrl+R
11. import导⼊的包必须使⽤,声明的变量也必须使⽤
3、使⽤命令⾏运⾏⽂件(在cmd⽂件的⽬录下)
go :编译⽣成⼀个可执⾏程序(可以解决在⼀个⽂件中快捷键只能⽣成可执⾏⽂件.exe的问题)。如go bulid
,go build 运⾏2次,也会⽣成2个可执⾏⽂件
cls:清屏
go :不⽣成程序,直接运⾏
4、变量、常量、枚举
4.1 输出
1. Println:⼀段⼀段处理,⾃动加换⾏符
2. Printf:格式化输出,把a的内容放在%d的位置
如:
fmt.Println("a = ", a)
fmt.Println("a = ", a, ", b = ", b, " ,c = ", c)
fmt.Printf("a = %d\n", a)
fmt.Printf("a = %d, b = %d, c = %d\n", a, b, c)
4.2 声明变量
1. var a int(申明⼀个变量)
2. var a,b int(声明2个变量)
3. var b int = 10(声明变量,同时初始化赋值)
4. ⾃动推导类型,必须初始化,通过初始化的值确定类型(常⽤),只能⼀次,赋值可以多次
如:
c := 30
fmt.Printf("c type is %T\n", c) //%T打印变量所属的类型
多次赋值,以及值的交换
i, j := 10, 20
j, i = j, i
多个变量不同类型的声明(定义)
var (
a int
b float64
)
var (
a int = 1
b float64 = 1.1
)
var (
a = 1
b = 1.1
)
4.3 匿名变量
匿名变量,丢弃数据不处理,匿名变量配合函数返回值使⽤,才有优势
tmp, _ = i, j
fmt.Println("tmp = ", tmp)
func test() (a, b, c int){
return 1, 2, 3
}
var c, d, e int
_, d, _ = test()
fmt.Printf("d = %d/n", d)
4.4 常量
变量:程序运⾏期间,可以改变的量,变量声明需要var
常量:程序运⾏期间,不可以改变的量,常量声明需要const,常量⾃动推导不需要冒号
const a int = 10 fmt.Println("a = ", a)
const b = 11.2 //⾃动推导不需要冒号 fmt.Printf("b type is %T\n", b) fmt.Println("b = ", b)
多个常量的声明 const ( i int = 10 j float64 = 3.14 ) const ( i int = 10 j float64 = 3.14 ) const ( i = 10 j = 3.14 ) 4.5 枚举iota
1. iota常量⾃动⽣成器,每个⼀⾏,⾃动累加1
2. iota给常量赋值使⽤
3. iota遇到const,重置为0
4. 可以只写⼀个iota
5. 如果是同⼀⾏,值都⼀样
如:
const (
a = iota //0
b = iota //1
printf输出格式 同行c = iota //2
)
const d = iota //重置为0
const (
a1 = iota //0
b1        //1
c1        //2
)
const (
i = iota //0
j1, j2, j3 = iota, iota, iota //1
k = iota  //2
)
5 数据类型
数据类型的作⽤:告诉编译器这个数(变量)应该以多⼤的内存存储
类型名称长度默认值说明
bool布尔类型1false true 或 fasle
byte字节型10uint8别名,只能存储英⽂字符
rune字符类型40可以存储英⽂或汉字字符,存储unicode编码,等价于uint32 int,uint整型4或80有符号位和⽆符号位,32位或者64位
int8,uint8整型10-128~127, 0~255
int16,uint16整型20
int32,uint32整型40
int64,uint64整型80
float32浮点型40.0⼩数精确到7位
float64浮点型80.0⼩数精确到15位
complex64复数类型8
complex128复数类型16
uintptr整型4或8
string字符串

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。