目录

1.标识符、关键字
2. 变量量和常量量
3. 数据类型
4. Go程序基本结构

标识符、关键字

1.标识符是⽤用来表示Go中的变量量名或者函数名,以字⺟母或_开头。后⾯面跟着字⺟母 、_或数字
2. 关键字
A. 88ab B. _ab28 C. ab_28
关键字是Go语⾔言预先定义好的,有特殊含义的标识符

break default func interface select
case defer go map struct
chan else goto package switch
const fallthough if range type
continue for import return var

变量

1. 语法:

var identifier type

例1

var a int
var b string
var c bool
var d int = 8
var e string = “hello

例2

//变量
package main import "fmt" func main() {
/*
//方式1
//整数 默认:0
var a int
// 布尔 默认:0flase
var b bool
// str 默认:""
var c string
// 浮点 默认:0.000000
var d float32
// 格式化输出
*/ //方式二
var (
a int
b bool
c string
d float32
) fmt.Printf("a=%d b=%t c=%s d=%f\n", a, b, c, d) a = 10
b = true
c = "hello"
d = 10.8
}

  

常量

1. 常量使⽤用const 修饰,代表永远是只读的,不不能修改。
2. 语法:const identifier [type] = value,其中type可以省略略。
举例:

const b string = “hello world”
const b = “hello world”
const Pi = 3.1414926 const a = 9/3

3. ⽐比较优雅的写法:

const(

a = 1
b = 2
c = 3
)

  

4. 更更加专业的写法:

iota,特殊常量,可以认为是一个可以被编译器修改的常量。

iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。

package main

import "fmt"

func main() {
    const (
            a = iota   //0
            b          //1
            c          //2
            d = "ha"   //独立值,iota += 1
            e          //"ha"   iota += 1
            f = 100    //iota +=1
            g          //100  iota +=1
            h = iota   //7,恢复计数
            i          //8
    )
    fmt.Println(a,b,c,d,e,f,g,h,i)
}package main import "fmt" func main() {
    const (
            a = iota   //0
            b          //1
            c          //2
            d = "ha"   //独立值,iota += 1
            e          //"ha"   iota += 1
            f = 100    //iota +=1
            g          //100  iota +=1
            h = iota   //7,恢复计数
            i          //8
    )
    fmt.Println(a,b,c,d,e,f,g,h,i)
}

  以上实例运行结果为:

const(

a = 1 << iota
b
c
)

  再看个有趣的的 iota 实例:

package main

import "fmt"
const (
i=1<<iota
j=3<<iota
k
l
) func main() {
fmt.Println("i=",i)
fmt.Println("j=",j)
fmt.Println("k=",k)
fmt.Println("l=",l)
}

  以上实例运行结果为:

i= 1
j= 6
k= 12
l= 24

  

iota 表示从 0 开始自动加 1,所以 i=1<<0, j=3<<1(<< 表示左移的意思),即:i=1, j=6,这没问题,关键在 k 和 l,从输出结果看 k=3<<2,l=3<<3。

简单表述:

  i=1:左移 0 位,不变仍为 1;

  • j=3:左移 1 位,变为二进制 110, 即 6;
  • k=3:左移 2 位,变为二进制 1100, 即 12;
  • l=3:左移 3 位,变为二进制 11000,即 24。

数据类型

1. 布尔类型
a. var b bool 和 var b bool = true 和 var b = false
b. 操作符 == 和 !=
c. 取反操作符: !b
d. && 和 || 操作符
e. 格式化输出占位符: %t

2. 整数和浮点数类型
a. int8、int16、int32、int64
b. uint8、uint16、uint32、uint64
c. int 和 uint,和操作系统平台相关
d. float32 和 float64浮点类型
e. 所有整数 初始化为0,所有浮点数初始化为0.0,布尔类型初始化为false

3. 整数和浮点数类型
a. Go是强类型语⾔言,不不同类型相加以及赋值是不不允许的
b. 那怎么样才能实现,不不同类型相加呢?
c. 输出占位符:整数%d,%x⼗十六进制,%f浮点数

字符串

1. 字符串串的两种表示⽅方式

a. 双引号, “”,可以包含控制字符

b. 反引号, ``,所有字符都是原样输出

package main 

import “fmt” 

func main() {
var str = “hello world\n\n”

var str2 = `hello \n \n \n`
fmt.Println(“str=“, str)
fmt.Println(“str2=“, str2)
}

  

2. 字符串串常⽤用操作

a. ⻓长度:len(str)

b. 拼接:+,fmt.Sprintf

c. 分割:strings.Split

d. 包含: strings.Contains

e. 前缀或后缀判断:strings.HasPrefix, strings.HasSuffix

f. ⼦子串串出现的位置: strings.Index(), strings.LastIndex()

g. join操作: strings.Join(a[]string, sep string)

数据类型和操作符

1、操作符
a. 逻辑操作符, == 、 != 、<、<=、>=
b. 算数操作符, +、-、*、/、%

go程序的基本结构

1. 任何⼀一个代码⽂文件⾪隶属于⼀一个包

package main
import “fmt”
func main() {
fmt.Println(“hello, world”)
}

  

2. import 关键字,引⽤用其他包:

import(“fmt”)

import(“os”)

通常习惯写成:

import (

  “fmt”

  “os”

)

3. 开发可执⾏行行程序,package main, 并且有且只有⼀一个main⼊入⼝口函数
4. 包中函数调⽤用:

a. 同⼀一个包中函数,直接⽤用函数名调⽤用
b. 不不同包中函数,通过包名+点+ 函数名进⾏行行调⽤用

5. 包访问控制规则:

a. ⼤大写意味着这个函数/变量量是可导出的

b. ⼩小写意味着这个函数/变量量是私有的, 包外部不不能访问

【原创】go语言学习(二)数据类型、变量量、常量量的更多相关文章

  1. Dart语言学习(二) Dart的常量和变量

    1.使用var声明变量,可赋予不同类型的值 Dart是一个强大的脚本类语言,可以不预先定义变量类型 ,自动会类型推导 Dart中定义变量可以通过var关键字可以通过类型来申明变量 var str='t ...

  2. 北京大学Cousera学习笔记--7-计算导论与C语言基础--基本数据类型&变量&常量

    1.整形数据 1.基本型(int 4B).短整型(short 2B).长整型(long 4B)  VC环境下 sizeof运算符用于计算某种类型的对象在内存中所占的字节数 ,用法:size(int) ...

  3. Go语言学习笔记三: 常量

    Go语言学习笔记三: 常量 定义常量 常量就是在声明后不能再修改的量. const x int = 100 const y string = "abc" const z = &qu ...

  4. Go语言学习之数据类型

    ### Go语言学习之数据类型 数据类型的转换 1.Go语言不允许隐式类型转换(显示转换才可以) 2.别名和原有类型也不能进行隐式类型转换 例子: func TestImplicit(t *testi ...

  5. python语言学习7——数据类型和变量

    整数 python可以处理任意大小的整数,包括负整数,在程序中的表示方法和数学上的写法一样 计算机由于使用二进制,有时候采用十六进制表示整数比较方便,十六进制数用0x前缀 浮点数 简单的小数就直接用小 ...

  6. C语言基础学习基本数据类型-变量的命名

    变量的命名 变量命名规则是为了增强代码的可读性和容易维护性.以下为C语言必须遵守的变量命名规则: 1. 变量名只能是字母(A-Z,a-z),数字(0-9)或者下划线(_)组成. 2. 变量名第一个字母 ...

  7. Apex语言(二)变量与常量

    1.变量 凡是交给计算运算(处理)的数据就是变量,用来保存参加运算的数据和计算结果. 变量由变量名来标识. 变量名由字母数字和下划线组成,不能以数字开头. [正确]number,number1,num ...

  8. Java ——关键字 数据类型 变量 常量

    本节重点思维导图 Java程序结构 public class 类名 { public static void main(String[] args){ //……语句 } } 一门语言是由以下各种元素组 ...

  9. [C语言学习笔记四]变量与系统的交互

    使用 const 创建常量和使用 volatie 优化变量 C语言中使用 const 定义常量. 例如: const INT a = 10; 此处如果添加a = 20;,编辑器则会报错,因为此处 a ...

  10. C语言基础学习基本数据类型-变量和常量

    变量和常量 什么是变量和常量?有些数据在程序运行前就预先设定,并在运行过程中不发生变化,称之为常量:有些数据在程序运行中可能发生变化或被赋值,称之为变量. 使用变量前必须先声明一个变量.变量定义的语法 ...

随机推荐

  1. HYSBZ - 4016 最短路径树问题 点分治 + 最短路径最小字典序

    题目传送门 题解:首先对于给定的图,需要找到那些从1好点出发然后到x号点的最短路, 如果有多条最短路就要找到字典序最小的路,这样扣完这些边之后就会有一棵树.然后再就是很普通的点分治了. 对于扣边这个问 ...

  2. Codeforces Round #481 (Div. 3) C. Letters

    题目地址:http://codeforces.com/contest/978/problem/C 题解:有n个宿舍,每个宿舍人不一样多,有m封信,每封信送给对应的第m间房间,问这封信是给第几个宿舍,第 ...

  3. webpack4 公共模块打包,怎么抽取出来一个需要经常修改的包

    项目中有一个需求: 所有页面引用了一个公共ad.js 因为广告需要不断投放新渠道,所以ad.js需要经常上线更新,这样会导致打包出来的 commons.js经常更新,缓存一下无效了.所以急需将ad.j ...

  4. 【LeetCode】116#填充同一层的兄弟节点

    题目描述 给定一个二叉树 struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; } 填充 ...

  5. [系列] go-gin-api 路由中间件 - Jaeger 链路追踪(五)

    概述 首先同步下项目概况: 上篇文章分享了,路由中间件 - 捕获异常,这篇文章咱们分享:路由中间件 - Jaeger 链路追踪. 啥是链路追踪? 我理解链路追踪其实是为微服务架构提供服务的,当一个请求 ...

  6. elk安装和使用

    elk安装和使用 使用的版本都是5.2.0 elasticsearch-5.2.0安装 在官网 下载 elasticsearch tar包 解压安装 tar zxf elasticsearch-5.2 ...

  7. android View的测量和绘制

    本篇内容来源于android 群英传(徐易生著) 我写到这里,是觉得徐易生讲的确实很好, 另外加入了一些自己的理解,便于自己基础的提高. 另外参考:http://www.gcssloop.com/cu ...

  8. zookeeper与kafka集群部署实现

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作.最终, ...

  9. Flink 从 0 到 1 学习 —— 如何自定义 Data Sink ?

    前言 前篇文章 <从0到1学习Flink>-- Data Sink 介绍 介绍了 Flink Data Sink,也介绍了 Flink 自带的 Sink,那么如何自定义自己的 Sink 呢 ...

  10. Senparc.Weixin.MP SDK 微信公众平台开发教程(二十二):如何安装 Nuget(dll) 后使用项目源代码调试

    最近碰到开发者问:我使用 nuget 安装了 Senparc.Weixin SDK,但是有一些已经封装好的过程想要调试,我又不想直接附加源代码项目,这样就没有办法同步更新了,我应该怎么办? 这其实是一 ...