为什么80%的码农都做不了架构师?>>>   

1、变量

go的变量和java变量差不多,也分局部作用域和全部作用域

package mainimport "fmt"var c,python,java boolfunc main()  {var i intfmt.Print(i,c,java,python)
}

结果为:0 false false false

2、变量的初始化

变量声明可以包含初始值,每个变量对应一个。如果初始化值已存在,则可以省略类型;变量会从初始值中获得类型

package mainimport "fmt"var i,j int  = 2,4func main()  {var success,isah = true,falsefmt.Println(i,j,success,isah)
}

结果为:2 4 true false

3、短变量声明

在函数中,简洁赋值语句 := 可在类型明确的地方代替 var 声明!!!

函数外的每个语句都必须以关键字开始(var func等等),因此 := 结构不能在函数外使用。

package mainimport "fmt"var i,j int  = 2,4func main()  {success,isah := true,falsefmt.Println(i,j,success,isah)
}

结果为:2 4 true false

4、go数据类型

4.1 整型

go语言有13种整形,其中有2种只是名字不同,实质是一样的,所以,实质上go语言有11种整型

整型

int

依赖不同平台下的实现,可以是int32或int64

int8 [-128---127] [-2^7---2^7-1]
int16 [-2^15---2^15-1] 
int32 [-2^31---2^31-1] 
int64 [-2^63---2^63-1]
unit 依赖不同平台下的实现,可以是int32或int64
unit8(又名byte) [0---2^8-1]
unit16 [0---2^16-1]
unit32(又名rune) [0---2^32-1]
unit64 [0---2^64-1]
unitptr 恰好容纳指针值的类型,对32位平台是unit32,对64位平台是unit64

4.2 浮点类型     

go语言有2种类型的浮点和两种类型的复数类型。

浮点类型

float32   (-3.402...×1038  ->  3.402...×1038)
float64     (-1.797...×10308  ->  +1.797...×10308)
complex64     实部、虚部都是一个float32
complex128     实部、虚部都是一个float64

标准库math包中,包含了众多数学函数,其中所有函数均使用float64,标准库math/cmplx包含众多复数相关的数学函数,其中所有函数均使用complex128)

4.3、字符串

Go语言的字符串是用UTF-8编码的变宽字符序列,每个字符都用一个或多个字节表示

创建:一种是用双引号(")括起来,它表示可解析的字符串,可以进行字符转义。另一种是用单引号(')括起来,它表示原生的字符串,可以包含除反引号之外的任何字符,当然也可以换行

package mainimport "fmt"func test1() {str1 := "\"it's me!\""str2 := `"it's me,too"`fmt.Println(str1)fmt.Println(str2)
}func main()  {test1()
}

结果为:

"it's me!"
"it's me,too"

Go语言的字符串支持 “+=”操作,可以通过[n]获取索引处的原始字节、通过[n:m]、[n:]、[:m]来获取字节对应的字符串,若字符被截段,显示乱码。

package mainimport "fmt"func test1() {str1 := "\"it's me!\""str2 := `"it's me,too"`fmt.Println(str1)fmt.Println(str2)
}
func test2() {str1 := "Go语言是目前最有潜力的语言,由GooGle开发,用于区块链的主流语言"fmt.Println(str1[4:15])fmt.Println(str1[5:15])fmt.Println(str1[5])fmt.Println(str1[:5])fmt.Println(len(str1))         //字节数fmt.Println(len([]rune(str1))) //字符数
}func main()  {test2()
}

结果为:

5、bool类型

取值范围为:true , false,长度为 1 个字节,不可以用数字来表示true 和 false

6、指针

6.1 简单的指针

package mainimport "fmt"func test1() {str1 := "\"it's me!\""str2 := `"it's me,too"`fmt.Println(str1)fmt.Println(str2)
}
func test2() {str1 := "Go语言是目前最有潜力的语言,由GooGle开发,用于区块链的主流语言"fmt.Println(str1[4:15])fmt.Println(str1[5:15])fmt.Println(str1[5])fmt.Println(str1[:5])fmt.Println(len(str1))         //字节数fmt.Println(len([]rune(str1))) //字符数
}func test3() {a := "abc"b := "xyz"pa := &a  //pa为指向a的指针,在java里面就是指向a的内存地址pp := &pa //pp为指向pa的指针,在java里面就是指向pa的内存地址fmt.Println(a, b, *pa, **pp)a += "zz" //a追加“mm”fmt.Println(a, b, *pa, **pp)*pa += "bb" //pp指向的值,追加"bb"fmt.Println(a, b, *pa, **pp)fmt.Println("打印a各种情况:", &a, a)fmt.Println("打印pa各种情况:", &pa, pa, *pa)fmt.Println("打印pp各种情况:", &pp, pp, *pp, **pp)
}func main()  {test3()
}

结果为:

所以说大家可以明白,& 这个就是指向后面参数的内存地址,而并非值,当使用*来表示的时候就是现实内存内容的具体值了!!!

6.2 创建变量

有两种创建变量的语法,同时获得指向它们的指针:new(Type) 和 &Type{}

在上面添加一个结构体(java中的实体类一样)和一个函数(java中方法一样)

type point struct {x inty int
}
func test4() {a := point{2, 4}b := new(point)c := &point{}d := &point{3, 5}fmt.Println(a, b, c, d)
}

运行结果:

{2 4} &{0 0} &{0 0} &{3 5}

Go语言打印指向结构体的指针时,会打印解引用后的结构体内容,同时会将&作为前缀,表示它是一个指针!

7、默认数据类型

1、零值并不等于空值,而是当变量被声明为某种类型的初始值
    2、正常情况下的默认值为0
    3、bool默认为false
    4、string默认为空字符串

8、常量修饰

const mdxl  = "ed"

用const 修饰常量,当mdxl时,不能外部调用,当变成大写Mdxl的时候,可以外部调用

转载于:https://my.oschina.net/mdxlcj/blog/1931315

Go语言_通神路之灵胎篇(3)相关推荐

  1. Go语言_通神路之灵胎篇(5)

    为什么80%的码农都做不了架构师?>>>    1.指针 Go 拥有指针.指针保存了值的内存地址 类型 *T 是指向 T 类型值的指针.其零值为 nil. & 操作符会生成一 ...

  2. Go语言_通神路之灵胎篇(1)

    为什么80%的码农都做不了架构师?>>>    序言:Go语言拿下两届年度最佳编程语言,区块链目前最火使用的编程语言,2020年-2025年爆发年!go的开源项目:docker.ku ...

  3. Go语言_通神路之灵胎篇(2)

    为什么80%的码农都做不了架构师?>>>    1.包 每个Go程序都是由包构成,从main包开始运行,就是我上一篇讲到的,都是从main函数开始执行,但是必须在main包下面! p ...

  4. Go语言_通神路之灵胎篇(4)

    为什么80%的码农都做不了架构师?>>>    1.for循环 func main() {sum := 0for i := 0;i<10 ;i++ {sum += i}fmt. ...

  5. Go语言_通神路之灵胎篇(6)

    为什么80%的码农都做不了架构师?>>>    1.映射 1.1 概念 go的映射在java中被叫做集合 type Vertex struct {Lat, Long float64 ...

  6. Go语言_通神路五耀篇(3)

    为什么80%的码农都做不了架构师?>>>    1.Reader io 包指定了 io.Reader 接口,它表示从数据流的末尾进行读取. Reader接口包含的方法 func (T ...

  7. C++语言程序设计视频教程_清华大学_郑莉(基础篇+进阶篇)

    C++语言程序设计视频教程_清华大学_郑莉(基础篇) 第一章:绪论 1.1 导学 1.2 计算机系统简介 1.3计算机语言和程序设计方法的发展 1.4 面向对象的基本概念 1.5 程序的开发过程 1. ...

  8. c语言拍飞虫课程设计报告,c语言课程设计_拍飞虫提高篇.doc

    c语言课程设计_拍飞虫提高篇 C语言课程设计二 拍飞虫 一.游戏介绍 拍飞虫游戏是玩家用鼠标控制拍子,拍飞虫.飞虫每次从不同的位置.以不同的速度飞来飞去.玩家拍的飞虫越多,分数越高. 二.实验目的 综 ...

  9. 太空战机c语言实验报告,c语言课程设计_太空战机提高篇.doc

    c语言课程设计_太空战机提高篇 C语言课程设计--太空战机 一.游戏介绍 太空战机是玩家用键盘控制战机移动并发射子弹,消灭敌方的战机.敌方战机从右到左移动,同时上下浮动.同时隔一定的时间发射子弹,我方 ...

最新文章

  1. error aborting mysql,mysql错误1067,mysql1067错误aborting
  2. Oracle数据库对象----视图
  3. linux apache 负载均衡,使用Apache作为前端负载均衡器
  4. 英特尔裁员1.2万 CEO还在涨薪?
  5. jzoj3682-Points and Segments【模型转化,欧拉回路】
  6. matlab畸变程度计算,matlab 畸变校正代码
  7. java课程设计 扫雷_java扫雷游戏课程设计报告
  8. 如何为约束更改设置动画?
  9. 代表JAVA线程优先级的常量是_Java 线程优先级
  10. Wellcome Sanger研究所选择Arima Genomics作为HiC技术合作伙伴; 公司宣布针对高覆盖HiC的抢先体验活动
  11. import xx fromxx 的含义
  12. imap能和服务器同步文件夹吗,IMAP 同步
  13. python七巧板拼图代码_为什么代码都是用英文来写的,将来会有用中文写代码的那天吗?...
  14. 【java】 文件批量下载并压缩为zip压缩包
  15. 学习Linux(centos7)准备的工具
  16. 中继器、网桥、路由器和网关的功能及区别
  17. 青春版网盘:不限度,10GB 空间
  18. 液晶面板里面有些什么配件_液晶显示器参数和部件详细介绍
  19. 传国宝玺 第三部 巴山藏宝洞 第三十四章 千魂魈
  20. 苦战金三银四:580道最全面的BATJ大厂Java面试真题分享

热门文章

  1. 如何发布百度爱采购的优质商品去运营推广@运营猫工具箱
  2. pure-ftp不得不爱之pure-ftpd.conf 中文说明 【转帖】
  3. 知识图谱 方法、实践与应用 王昊奋 读书笔记(下)
  4. 计算机辅助工程分析课程论文,教学大纲—计算机辅助工程分析.doc
  5. 小女生的Linux技术~~~Linux面试题汇总答案~~
  6. BAT大量裁人,快35岁的程序员该何去何从,Android并发原理解析
  7. 我应该选一所什么学校--所有选择,都应基于你的需要
  8. 桶排序算法——C++
  9. 【设计模式】Command模式
  10. USB打印机连接电脑无故变成unknown device