目录

基本数据类型

布尔型

数字型

整形

浮点型

字符和字符串

数据类型转换

运算符

算术运算符

关系运算符

逻辑运算符

位运算符(二进制)

赋值运算符

其他运算符

拓展:键盘输入输出

编码规范

为什么需要代码规范

代码规范


基本数据类型

在Go编程语言中,数据类型用于声明函数和变量。

数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。

编译器在进行编译的时候,就要知道每个值的类型,这样编译器就知道要为这个值分配多少内存,并且知道这段分配的内存表示什么。

布尔型

布尔型的值只可以是常量true或者false

布尔类型的值默认为false

package mainimport "fmt"func main() {// var 变量名 数据类型var isFlang boolfmt.Println(isFlang)
}
//输出结果为:false

数字型

整形

整形int和浮点型float32、float64、Go语言支持整形和浮点型数字,并且支持负数,其中位 的运算采用补码

序号 类型和描述
1 uint8无符号8位整型(O到255)
2 uint16无符号16位整型(O到65535)
3 uint32无符号32位整型(O到4294967295)
4 uint64无符号64位整型(0到18446744073709551615)
5 int8有符号8位整型(-128到127)
6 int16有符号16位整型(-32768到32767)
7 int32有符号32位整型(-2147483648到2147483647)
8 int64有符号64位整型(-9223372036854775808到 9223372036854775807)
package mainimport "fmt"func main() {//定义一个整形//byte uint8//rune int32//int int64var age int = 18fmt.Printf("%T,%d\n", age, age)//定义一个浮点型var money float32 = 300.15//这里打印浮点数类型为%f//默认是6位小数打印fmt.Printf("%T,%f\n", money, money)
}
//输出结果:int,18
//float32,300.149994

浮点型

1、关于浮点数在机器中存放形式的简单说明,浮点数=符号位+指数位+尾数位

2、尾数数部分可能丢失,造成精度损失。-123.0000901

序号 类型和描述
1 float32 IEEE-754 32位浮点型数
2 float64 lEEE-75464位浮点型数
3 complex64 32位实数和虚数
4 complex128 64位实数和虚数

类型别名

序号 类型和描述
1 byte类似于uint8
2 rune类似于int32
3 uInt32或64位
4 int与uint一样大小
5 uintprt无符号整形,用于存放一个指针

字符和字符串

字符串就是一串固定长度的字符连接起来的字符序列。

Go的字符串是由单个字节连接起来的。

Go语言的字符串的字节使用UTF-8编码标识Unicode文本。

package mainimport "fmt"func main() {//字符串 双引号var str stringstr = "hello,word"//输出打印的类型和值fmt.Printf("%T,%s\n", str, str)//    字符 单引号//字符为数值类型,需要%d打印//所有中国字的编码表:GBK//全世界的编码表:Unicode编码表v1 := 'A'v2 := "B"v3 := '中'//编码表 ASCII字符吗fmt.Printf("%T,%d\n", v1, v1)fmt.Printf("%T,%s\n", v2, v2)fmt.Printf("%T,%d\n", v3, v3)//字符串拼接fmt.Printf("hello" + "学相伴\n")//转义字符 \fmt.Printf("hello\"学相伴\"\n")//间隔符 \t tabfmt.Printf("hello\"学相伴\t")}

数据类型转换

在必要以及可行的情况下,一个类型的值可以被转换成另一种类型的值。

由于Go语言不存在隐式类型转换,因此所有的类型转换都必须显式的声明

package mainimport "fmt"func main() {a := 3   //intb := 4.0 //float64//需求:将a转换为float64位c := float64(a)//boll 整形是不能转换为bool的//cannot convert a (variable of type int) to type bool//e := bool(a)fmt.Printf("%T\n", a)fmt.Printf("%T\n", b)fmt.Printf("%T\n", c)//fmt.Printf("%T\n", e)
}
/*输出结果为:intfloat64float64*/

类型转换只能在定义正确的情况下转换成功,例如从一个取值范围较小的类型转换到一个取值范围较大的类型(将int16转换为int32)。

当从一个取值范围较大的类型转换到取值范围较小的类型时(将int32转换为int16或将 float32转换为 int),会发生精度丢失(截断)的情况。

运算符

算术运算符

下表列出了所有Go语言的算术运算符。假定A值为10,B值为20。

运算符 描述 实例
+ 相加 A+B输出结果30
- 相减 A-B输出结果-10
* 相乘 A*B输出结果为200
/ 相除 B/A输出结果为2
% 求余 B%A输出结果为0
++ 自增 A++输出结果11
-- 自减 A--输出结果为9
package mainimport "fmt"func main() {var a int = 10var b int = 3// + - * / % ++ --fmt.Println(a + b)fmt.Println(a - b)fmt.Println(a * b)fmt.Println(a / b)a++ //a=a+1fmt.Println(a)a-- //a=a-1fmt.Println(a)
}
/*输出结果为:
13
7
30
3
11
10
*/

关系运算符

下表列出了所有Go语言的关系运算符。假定A值为10,B值为20。

运算符 描述 实例
== 检查两个值是否相等,如果相等返回True否则返回false A==B 为false
!= 检查两个值是否不相等,如果不相等返回True否则返回false A!=B为true
> 检查左边值是否大于右边值,如果是返回True否则返回false A>B 为false
< 检查左边值是否小于右边值,如果是返回True否则返回false A<B为True
>= 检查左边值是否大于等于右边值,如果是返回True否则返回false A>=B 为false
<= 检查左边值是否小于等于右边值,如果是返回True否则返回false A<=B 为true
package mainimport "fmt"func main() {var A int = 10var B int = 20//关系运算符,结果都是boolfmt.Println(A == B)fmt.Println(A != B)fmt.Println(A > B)fmt.Println(A < B)fmt.Println(A >= B)fmt.Println(A <= B)
/*
输出结果:falsetruefalsetruefalsetrue
*/
}

逻辑运算符

下表列出了所有Go语言的逻辑运算符。假定A值为true,B值为false。

运算符 描述 实例
&& 逻辑AND运算符,如果两边的操作数都是True,则条件True,否则为False。 A&&B 为false
|| 逻辑OR运算符,如果两边的操作数有一个True,则条件True,否则为False。 A||B为true
逻辑NOT运算符,如果条件为True,则逻辑NOT条件False,否则为True。 !(A&&B )为true

逻辑与&&

package mainimport "fmt"func main() {var a bool = truevar b bool = false//如果a和b同时为真if a && b {//那么我们输出为 truefmt.Println(a)} else {//否则输出为 falsefmt.Println(b)// 输出的结果为 :false}}

逻辑或||

遇真则真,全假则假

package mainimport "fmt"func main() {var a bool = truevar b bool = false//当a或者b其中一个为真那么结果为真,if a || b {//那么我们输出为 truefmt.Println(a)}
//输出结果: true
}

逻辑非!

非也,也可以理解取反,表示否定的意思

package mainimport "fmt"func main() {var a bool = truevar b bool = false//非b  那么!b=tureif !b {//那么我们输出为 a,因为a=truefmt.Println(a)}
//输出结果: true
}

位运算符(二进制)

运算符 描述 实例
& 按位与运算符"&"是双目运算符。都是1结果为1,否则是0 (A&B)结果为12,二进制为0000 1100
| 按位或运算符"|"是双目运算符。都是0结果为0,否则是1 (A |B)结果为61,二进制0011 1101
^ 按位异或运算符"A"是双目运算符。不同则为1,相同为0 (A^B)结果为49,二进制为0011 0001
&^ 位清空,a &^b,对于b上的每个数值,如果为0,则取a对应位上的数值,如果为1,则取0. (A&^B)结果为48,二进制为0011 0000
<< 左移运算符"<<"是双目运算符。左移n位就是乘以2的n次方。其功能把"<<"左边的运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补O。 A<<2结果为240,二进制为1111 0000
>> 右移运算符">>"是双目运算符。右移n位就是除以2的n次方。其功能是把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数。 A>>2结果为15,二进制为0000 1111
package mainimport "fmt"func main() {//    二进制 逢二进一//位运算:二进制//  60  0011 1100// 13  0000 1101//----------------进行&运算//  12  0000 1100 我和你 同时满足//----------------进行|运算//  61 0011 1101  我或你 一个满足即可// 49  0011 0001  不同为1 相同为0var a uint = 60var b uint = 13//与运算结果fmt.Printf("%d,二进制:%b\n", a&b, a&b)//或运算结果fmt.Printf("%d,二进制:%b\n", a|b, a|b)//非运算结果fmt.Printf("%d,二进制:%b\n", a^b, a^b)//a向左移动两位//    60  0011 1100// 移动之后 1111 0000fmt.Printf("左移动后后的十进制:%d,左移动后的二进制:%b\n", a<<2, a<<2)//a向右移动两位//   60  0011 1100// 移动之后 0000 1111fmt.Printf("右移动后后的十进制:%d,右移动后的二进制:%b\n", a>>2, a>>2)/*输出结果:12,二进制:110061,二进制:11110149,二进制:110001左移动后后的十进制:240,左移动后的二进制:11110000右移动后后的十进制:15,右移动后的二进制:1111*/
}

赋值运算符

下表列出了所有的Go语言的赋值运算符

运算符 描述 实例
= 简单的赋值运算符,将一个表达式的值赋给一个左值 C =A+B将A+B表达式结果赋值给C
+= 相加后再赋值 C +=A等于C=C+A
-= 相减后再赋值 C -=A等于C=C-A
*= 相乘后再赋值 C *=A等于C=C *A
/= 相除后再赋值 C/=A等于C=C/ A
%= 求余后再赋值 C%=A等于C=C%A
<<= 左移后赋值 C<<=2等于C=C<<2
>>= 右移后赋值 C>>=2等于C=c>>2
&= 按位与后赋值 C&=2等于C=C&2
^= 按位异或后赋值 C=2等于C=C2
!= 按位或后赋值 C|=2等于C=C|=2
package mainimport "fmt"func main() {var A int = 10var B int = 20var C int// 赋值运算符 =C = A + Bfmt.Println(C) //结果为30//     相加后再赋值C += A //注意这里初始值为:C=30  C= C+A=30+10fmt.Println(C)
/*
输出结果:3040*/
}

其他运算符

运算符 描述 实例
& 返回变量存储地址 &a;将给出变量的实际地址
* 指针变量 *a;是一个指针变量

拓展:键盘输入输出

package mainimport "fmt"func main() {var a intvar b float32//定义了两个变量,想用键盘来录入这个两个变量//fmt.Println() 打印并换行//fmt.Printf() 格式化输出//fmt.Printf() 打印输出fmt.Printf("请输入两个数:1.整数 2.浮点数\n")fmt.Scanln(&a, &b)fmt.Printf("输出的两个数的结果为:\n")fmt.Println("a:", a, "b:", b)//   fmt.Scanln() 接受输入scan//   fmt.Scanf() 接受输入  格式化输入 作业//  fmt.Scan() 接受输入 作业}

编码规范

为什么需要代码规范

  • 代码规范不是强制的,也就是你不遵循代码规范写出来的代码运行也是完全没有问题的
  • 代码规范目的是方便团队形成一个统一的代码风格,提高代码的可读性,规范性和统一性。本规范将从命名规范,注释规范,代码风格和Go语言提供的常用的工具这几个方面做一个说明。
  • 规范并不是唯一的,也就是说理论上每个公司都可以制定自己的规范,不过一般来说整体上规范差异不会很大。

代码规范

命名规范

命名是代码规范中很重要的一部分,统一的命名规则有利于提高的代码的可读性,好的命名仅仅通过命名就可以获取到足够多的信息。

  • 当命名(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的public) ;
  • 命名如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的private )

包名:package

保持package的名字和目录名保持一致,尽量采取有意义的包名,简短,有意义,尽量和标准库不要冲突。包名应该为小写单词,不要使用下划线或者混合大小写。

package model
package main

文件名

尽量采取有意义的文件名,简短,有意义,应该为小写单词,使用下划线分隔各个单词(蛇形命名)。

Go语言笔记—Go基础语法(2)相关推荐

  1. java基本语法心得_Java学习笔记(一)——基础语法(上)

    Java学习笔记(一)--基础语法(上) 软件构造 写在前面 编写Java程序时,应注意以下几点:大小写敏感:Java是大小写敏感的,这就意味着标识符Hello与hello是不同的. 类名:对于所有的 ...

  2. C语言笔记-22-Linux基础-信号

    C语言笔记-22-Linux基础-信号 文章目录 C语言笔记-22-Linux基础-信号 前言 一.信号概括 二.信号函数 三.信号的产生 pause 阻塞线程 四.信号掩码集和未决信号集 五.设置阻 ...

  3. python学习笔记:基础语法

    目录 python语言概述 python基础语法 python标准数据类型 1.数字类型 2.字符串类型 3.列表类型 4.元组 5.字典 python基础语法 1.条件判断语句 2.循环语句 3.函 ...

  4. Go语言学习笔记—golang基础语法

    视频来源:B站<golang入门到项目实战 [2022最新Go语言教程,没有废话,纯干货!]> 文章为自己整理的学习笔记,侵权即删,谢谢支持! 文章目录 golang基础语法 一.gola ...

  5. Go语言学习笔记之基础语法(一)

    目录 1. Go语言介绍 Go语言是什么 Go语言优势 Go适合用来做什么 2. Go环境搭建 通过Sublime 编译运行go程序 学习资料 3. 第一个Go程序 通过命令行运行程序 4. 基础语法 ...

  6. 【转载】阿秀的求职笔记:基础语法篇

    本专栏内容均为复习笔试面试阶段学习的文章,部分加上了自己的注释,文章注明转载!! 为了自己更好理解+查看方便+督促自己每天学习 [争取日更25条] 重要的事情说三遍 欢迎大家去 阿秀的求职笔记 学习! ...

  7. Java学习笔记之基础语法(一)

    目录 前言 一.基础语法 基础概念 运算符 数据输入Scanner 条件判断 循环 Random 二.IDEA安装与使用 IDEA项目结构介绍 IDEA中HelloWorld步骤 IDEA快捷键 前言 ...

  8. Python学习笔记(2)-基础语法

    1 ########### python基础语法 ################### 2 3 #标识符 4 #第一个字符必须是字母表中字母或下划线-- 5 #标识符的其他部分有字母,数字和下划线组 ...

  9. Scala语言学习一——基础语法

    什么是 Scala Scala 是一种多范式的编程语言, 其设计的初衷是要集成面向对象编程和函数式编程的各种 特 性 . Scala 运 行 于 Java 平 台 (Java 虚 拟 机 ) , 并 ...

最新文章

  1. python 错误--UnboundLocalError: local variable '**' referenced before assignment
  2. oracle:connect by start
  3. jdbcTemplate 后台接口中的分页
  4. iccv2020论文汇总_ICCV2019 最佳论文出炉,附1987~2019历届ICCV最佳论文汇总( 提供下载)...
  5. 关于软件组织培训的几个值得提倡的建议
  6. 看得懂的设计模式 享元模式python3 最基本(简单)实现
  7. Socket网络编程--小小网盘程序(3)
  8. ECS 游戏框架背景知识
  9. YII 规则rule 里面 min,max 提示错误信息
  10. Excel中 插入 对号等特殊字符
  11. 重大网络教育计算机基础章节答案,网络教育计算机基础1答案
  12. linux gnu编译器下载,GNU Compiler Collection(gcc编译器)下载_GNU Compiler Collection(gcc编译器)官方下载-太平洋下载中心...
  13. 大学计算机基础word操作2018,大学计算机基础试题及答案2017
  14. msm8953 lk阶段lcd流程
  15. erlang的逗号和分号和句号区别
  16. 微信公众号支付、支付查询、退款、退款查询、转账到零钱银行卡、转账查询接口整合(V2)
  17. 对宇宙起源的一个现代猜想-重生而非诞生
  18. Android 手机上获取手机当前上网IP地址(手机网关给手机号分配的IP)
  19. 获取buff市场的价格
  20. 【组合数学】通俗解释 Burnside引理和Polya定理

热门文章

  1. 【2018蓝桥杯备战】 程序整理
  2. 2017电赛板球系统比赛经历
  3. 房总管管家显示服务器错误,房总管管家
  4. 中文分词(1)--NLTK的基础使用
  5. (一)性能实时监控平台搭建(Grafana+Influxdb+Jmeter)
  6. python计算机视觉:复制和粘贴图像区域
  7. carla仿真模拟 下载、安装、运行教程
  8. 计算机评课用语不足与建议,评课用语不足与建议 [听课评语优缺点]
  9. 羊了个羊手摸手教你制作
  10. su如何变成实体_草图大师su实体工具怎么用?SketchUp的实体工具怎么用的啊?