0.前言

1. go定义变量的几种方式

2. go内建变量类型

3. 常量的定义

4. go枚举

5. go的if语句


零. go语言的换行

go语言对换行很有讲究, 如果想换行,必须有一个逗号, 否则就会报错

变量p编译都不通过, 因为最后的}换行了, 换行必须要有逗号. 写成pp的样子就可以了

一. go定义变量的集中方式

1. go一旦定义就有一个默认的值

具体每一种类型的默认初始化值是什么?

2. go如何定义变量初始化

第一种方式: 只声明, 不赋值

var int a;
var string b

  第二种方式: 变量会自动识别变量类型

var a, b, c, d = , "您好", false, 10.1

第三种方式: 通过 := 的方式赋值

a, b := "我", 

注意:

  1. 使用:= 赋值运算符, 至少要有一个变量是未定义过的.
  2. 在函数外面定义的变量不可以使用:=赋值运算符. 在函数外面必须要有var, 或者 func关键字
  3. 在函数外定义的变量不是全局变量, 他是包变量, 在包内部共享的变量.
  4. go没有全局变量的说法

第四种方式: 使用var()

var (
a = 10
b = "您好"
)

  

  

二. go内建变量类型

  • bool, string
  • (u)int, (u)int8, (u)int16, (u)int32, (u)int64, uintptr
  • byte, rune.
  • float32, float64, complex64, complex128

int类型的内建变量有11中

  1. 不带u的是有符号变量.  不带u的有符号变量还是有两类

    • 有长度指定的. int8, int16, int32, int64是有长度的. 在go中没有short, long类型的, 就通过int的位数来定义
    • 无长度指定的. int是无长度的,他的长度随操作系统不同而不同. 32位操作系统,int是32位的, 64位操作系统, int是64位的. 
  2. 带u的是无符号变量
  3. uintptr是int类型的指针. 他是无符号的. 指针的长度也是跟着操作系统来的.

rune类型是go语言的char类型

  1. rune是32位的. 占4个字节.  unicode中一个字符是2字节, 在utf-8中一个字符是3字节, 所以, rune采用了32位的4字节. rune和byte都是可以和int类型互相转化的

float类型

  1. 浮点数类型没有float和double. 直接通过位数来指定. float32就是32位的浮点数. float64就是64位的浮点数

complex类型

  1. complex是复数的意思. 这里指定了复数的构成. 复数直接就作为了一个内嵌变量的类型
  2. 复数有实部和虚部, complex64就是实部和虚部都是32位, complex128就是实部和虚部都是64位. 这样可以处理比较复杂的数据计算.

java和go数据类型对比

三. 常量的定义

方式一: 使用const定义

const aa = 

方式二: 如果有多个变量, 可以使用const()定义

const(
aa =
bb =
)

备注: 1. go语言中的常量一般不全部大写,因为在go中, 大小写是有含义的. 就像普通变量的命名规则就可以了

四. go枚举类型

1. 定义一个枚举

func enums(){
const (
cpp = 1
java = 2
php = 3
go = 4
python = 5
) fmt.println(cpp, java, php, go ,python)
}

打印结果: 1, 2, 3, 4, 5

2. 使用自动增长值的方式

func enums(){
const (
cpp = iota
_
php
go
python
javascript
) fmt.println(cpp, javascript, php, go ,python)
}

打印结果: 1, 6, 2, 3, 4

3. 复杂的自增长类型

func enums(){
const (
b = 1<<(10* iota)
kb
mb
gb
tb
pb
) fmt.println(b, kb, mb, gb ,tb, pb)
}

打印结果:1  1024  1048576,   1073741824,   1099511627776,  1125899906842624  

备注:  [1<<(10 * iota)的含义时: 如果: iota=0, i* 2的0次方, iota=1, 1*2的10次方. 如果iota=2, 就是1*2的20次方, 一次类推]

五. go条件语句

1. if语句

这里和其他语言都基本类似, 有一点, 可以将查询返回的结果和if语句写在一行. 类似下面这样

2. switch语句

    • switch语句其他语言不一样的地方时. 每一个case后面不用显示的写break. go语言默认会在每一个case后面加上break. 如果不想break, 需要显式的加上fallthrough
    • switch语句后面可以没有表达式, 直接在case里判断

例如:

package main

import "fmt"

func useSwitch(grade int) {
switch {
case grade < 0 || grade > 100:
panic("分数异常")
case grade < 60:
fmt.Println("不及格")
case grade >= 60 && grade <= 80:
fmt.Println("良好")
case grade > 80 && grade <= 100:
fmt.Println("优秀") }
} func main() {
useSwitch(40)
useSwitch(65)
useSwitch(85)
useSwitch(100)
useSwitch(-20)
}

3. for循环.

    • go里只有for循环, 没有while循环和while...do 循环. 取而代之的是,for循环有多种形式
    • for循环没有初始变量, 只有结束条件和递增条件. 就相当于是while...do. 见下demo
    • for循环没有初始变量, 没有逻辑处理条件, 只有一个结束条件, 就相当于是while
    • for没有初始变量, 没有逻辑处理条件, 没有结束条件, 就是一个无限循环.

这里面有三个for循环, 初始条件为空, 有循环条件和运算, 相当于while....do

第二个for循环是一个死循环. Go里有gorouting, 会经常使用到死循环.

第三个for循环初始条件和运算都为空, 只有循环条件. 相当于while.

go基础系列 第一章 go基础语法的更多相关文章

  1. Python 学习系列----第一章:基础知识

    1.1 常量-----不能改变它的值 1.2 数 在Python 中数可以分为整数.浮点数和复数. PS:在Python中不用区分'long int'类型.默认的整数类型可以任意长.(译者注:长度应该 ...

  2. web前端学习python之第一章_基础语法(二)

    web前端学习python之第一章_基础语法(二) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...

  3. web前端学习python之第一章_基础语法(一)

    web前端学习python之第一章_基础语法(一) 前言:最近新做了一个管理系统,前端已经基本完成, 但是后端人手不足没人给我写接口,自力更生丰衣足食, 所以决定自学python自己给自己写接口哈哈哈 ...

  4. 第一章 –– Java基础语法

    第一章 –– Java基础语法 span::selection, .CodeMirror-line > span > span::selection { background: #d7d4 ...

  5. 第一章 jQuery基础

    第一章jQuery基础 一.jQuert简介 1.什么是jQuery jQuery是javaScript的程序库之一,它是javaScript对象和实用函数的封装. jQuery是继Prototype ...

  6. python第一章计算机基础

    第一章 计算机基础 1.1 硬件 计算机基本的硬件由:CPU / 内存 / 主板 / 硬盘 / 网卡 / 显卡 / 显示器 等组成,只有硬件但硬件之间无法进行交流和通信. 1.2 操作系统 操作系统用 ...

  7. oracle系列--第一篇 数据库基础

    第一章 数据库基础 1.1 数据管理概述 1.1.1 什么是数据管理 与我们人类相比,计算机的最大优势就是能够高速.精准地运行,其运行的过程就是执行程序代码和操作指令.处理数据的过程.可以说,数据处理 ...

  8. 村田噪声抑制基础教程-第一章 需要EMI静噪滤波器的原因

    1-1. 简介 EMI静噪滤波器 (EMIFIL®) 是为电子设备提供电磁噪声抑制的电子元件,配合屏蔽罩和其他保护装置一起使用.这种滤波器仅从通过连线传导的电流中提取并移除引起电磁噪声的元件.第1章说 ...

  9. 《零成本实现Web自动化测试--基于Selenium》第一章 自动化测试基础

    第一篇 Selenium 和WebDriver工具篇 第一章 自动化测试基础 1.1    初识自动化测试 自动化测试有两种常见方式 1.1.1 代码驱动测试,又叫测试驱动开发(TDD) 1.1.2 ...

随机推荐

  1. 节点(node)操作

    一.节点的属性 节点值页面中的所有内容,包括标签.属性.文本 nodeType,节点类型:如果是标签,则是1:如果是属性.则是2:如果是文本,则是3 nodeName,节点名字:如果是标签,则是大写的 ...

  2. Cogs 1714. [POJ1741][男人八题]树上的点对(点分治)

    [POJ1741][男人八题]树上的点对 ★★★ 输入文件:poj1741_tree.in 输出文件:poj1741_tree.out 简单对比 时间限制:1 s 内存限制:256 MB [题目描述] ...

  3. maven下载与安装

    1.下载地址:http://maven.apache.org/download.cgi(Windows平台下载*.zip压缩包,Linux平台下载*.gz压缩包) 2.解压到E:\JAVA\Maven ...

  4. 提高python运行效率的方法

    让关键代码依赖于外部包:你可以为紧急的任务使用C.C++或机器语言编写的外部包,这样可以提高应用程序的性能 使用生成器,因为可以节约大量内存 多个if elif条件判断,可以把最有可能先发生的条件放到 ...

  5. Java for循环的语法和执行顺序

      关于java的for循环想必大家非常熟悉,它是java常用的语句之一.for循环是最灵活也是最常用的循环结构,表达式一般如下: for(表达式1;表达式2;表达式4){ 表达式3; } 执行顺序: ...

  6. Go语言之快速排序

    package main import "fmt" func partition(array []int, i int, j int) int { //第一次调用使用数组的第一个元 ...

  7. 配置centos7阿里镜像源和epel源

    [root@runstone yum.repos.d]# pwd /etc/yum.repos.d [root@runstone yum.repos.d]# cat aliBase.repo #镜像源 ...

  8. PullToRefresh原理解析,pulltorefresh解析

    PullToRefresh原理解析,pulltorefresh解析 代码届有一句非常经典的话:"不要重复制造轮子",多少人看过之后便以此为本,把鲁迅的"拿来主义" ...

  9. Elasticsearch6.4.0-windows环境部署安装

    Elasticsearch可以轻松的实现全文检索,本文主要介绍Elasticsearch(ES)环境的安装部署,该文及后续使用的ES版本为6.4.0.希望能够帮助到大家. 一.安装Elasticsea ...

  10. selinux 开启和关闭

    对于新手来说,linux的selinux困扰了一大批学员,开启后,导致文件权限修改不了等问题,下面就是关闭设置setlinux的方法 查看SELinux状态: 1./usr/sbin/sestatus ...