二、Go语言基础入门
@Author:Runsen
最近在从 Java/python 语言转型到 go 语言,本文是Go 基础系列的文章,不会刻意追求面面俱到,但该有知识点都会覆盖。
下面我们就来简单的看看 go 语言里的这些语法吧。
文章目录
- 变量
- 基本类型
- 常量
变量
Go 语言变量名由字母、数字、下划线组成,其中首个字符不能为数字。其实这就是Python,Java编码的命名要求。
Go 语言声明变量的一般形式是使用 var 关键字,这个和JavaScript很相似。
比如,我们声明一个为int类型的变量a:
var a int
可以看出,Go语言声明变量的方式为:
var <变量名> <变量类型>
我们还可以同时声明多个类型相同的变量:
var <变量名1>, <变量名2>, <变量名3>, ... <变量类型>
使用分组同时声明多个类型不同的变量:
var (<变量名1> <变量类型1><变量名2> <变量类型2><变量名3> <变量类型3>...
)
我们可以发现Go编程语言声明变量与Python和Java不同,Python不需要声明变量的类型。Java声明变量是将类型写在最前面,没有var关键字。Go声明变量的类型却在后面
下面是一个具体的例子,需要注意的是数值类型默认为 0,布尔类型默认为 false,字符串默认为""
(即空字符串)
package mainimport "fmt"var i bool//类型在后func main() {var a, b, c int//多个var d stringfmt.Println(i, a, b, c, d)j, k := 2, 3fmt.Println(j, k)
}# false 0 0 0
# 2 3
变量d由于是空字符串,所以打印出来了但是看不到。
除此之外还有一种更简洁的声明变量的方式,就是使用:=
声明变量。
当我们使用:=
声明变量时,不用写var也不用写类型,但是这里需要强调这种方式只能在函数内部使用,不能在函数外部使用。因此如果在函数外部声明变量时,只能使用var。
此外,这里还要一个非常需要注意的一点:我们声明的变量必须要使用,如果声明了变量,但是没使用,会在编译时报错。
比如:
package mainimport "fmt"func main() {var i boolvar j int //声明了,但没使用,会报错 j declared and not usedfmt.Println(i)
}
基本类型
像其他语言一样,go 有布尔类型,字符串类型,整数类型,浮点数类型和复数类型。
布尔类型为bool,值可取true或false,默认值为false。
字符串类型为string,默认为空字符串""。
整数类型分为:
- 有符号数:int、int8、int16、int32 (rune)、int64
- 无符号数:uint、uint8 (byte)、uint16、uint32、uint64
具体的数值范围查看下表
类型 | 长度(字节) | 数值范围 |
---|---|---|
int8 | 1 | -128~127 (-2^(8-1) ~ 2^7-1) |
uint8 | 1 | 0~255 (0 ~ 2^8-1) |
int16 | 2 | -32768~32767 |
uint16 | 2 | 0~65535 |
int32 | 4 | -2^31 ~ 2^31-1 (-2147483648~2147483647) |
uint32 | 4 | 0~2^32-1 (0~4294967295) |
int64 | 8 | -2^63 ~2^63-1 |
uint64 | 8 | 0~2^63 |
其中int和uint的两种类型的长度相同,取决于具体的编译器,比如在32位系统上通常为32位,在64位系统上通常为64位。
浮点数类型有两种:float32和float64,注意没有所谓的float类型。
复数类型也有两种:complex64和complex128
下面写一个定义变量赋值综合例子。
package main // 包名
import "fmt" // 导入var (a = 1b = "hello"c = true
)func main() {fmt.Println(c)variableNoValue()variableQuick()
}func variableNoValue() {var a intfmt.Println(a)
}func variableQuick() {a, b := 5, "hello"fmt.Println(a, b)
}# true
# 0
# 5 hello
常量
Go语言使用const来声明并赋值常量,常量在编译期间就确定,后续不能更改,也就是我们常数的常量不可以修改。
const Pi float32 = 3.1415926
const Pi = 3.1415926
Go 语言中的常量定义会有一些默认的规则,主要有:
- 定义常量时必须有值。
- 常量组中如果不对常量赋值的话,常量的值与上面一个是一致的。
- 常量与iota混用的话,iota会从0开始计数,多一个常量就会增加
这里大家可能对iota有些陌生,iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前),const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。
下面写一个定义综合例子。
package mainimport ("fmt"
)func main() {const (a = 2b // b=2c = 5d // d=5e // e=5)fmt.Println("Hello, Go常量:", a, b, c, d, e)const (f = 1g = 1h = iota // 前面有2个常量所以这里h =2i // i 在h之后,也会自动+1j // 同理与j,自动+1k = 10l = iota // iota 并不会因为上面的k值变化,而变化依然是6)fmt.Println("Hello, Go常量:", f, g, h, i ,j, k, l)
}# Hello, Go常量: 2 2 5 5 5
# Hello, Go常量: 1 1 2 3 4 10 6
二、Go语言基础入门相关推荐
- R语言基础入门(全)
R 是门语言,也是个环境.个人认为R有点像matlab. R自带多种统计学及数字分析功能.R的功能也可以通过安装包(Packages,用户撰写的功能)增强,个人感觉这个就是插件.因为S的血缘,R比其他 ...
- c语言用if语句abc输出最大值,C语言基础入门选择结构-if语句(78页)-原创力文档...
C语言基础入门选择结构-if语句_电脑基础知识_IT/计算机_专业资料.第9单元选择结构-if语句<程序设计基础>北京八维研修学院第1节选择结构导入?... <程序设计基础> ...
- C语言基础入门学习笔记
前言 我是一个初中生,过完暑假就是一个高一的学生了.在这个暑假里,我学习了韦东山老师和唐佐林老师的课程,所以我写下这个笔记来记录自己的成长历程. C语言基础入门学习笔记 格式 #include < ...
- 【学习笔记】山东大学生物信息学——Perl 语言基础入门+高级
文章目录 8.3 Perl 语言基础入门 8.3.1 第一个 Perl 8.3.2 Perl 的基本规则 8.3.3 字符串常用函数 8.3.4 数组常用函数 8.4 Perl 语言基础高级 8.4. ...
- matlab语言实验二,实验二 MATLAB语言基础
实验二 MATLAB 语言基础 一.实验目的 基本掌握 MATLAB 向量.矩阵.数组的生成及其基本运算(区分数组运算和矩阵运算).常用的数学函数.了解字符串的操作. 二.实验内容 (1) 向量的生成 ...
- python语言基础实验_实验二Python语言基础函数包练习.doc
实验二Python语言基础函数包练习 实验 Python语言基础函数包练习:1208 学号: 实验目的 1.Python语言包,如math.NumPySciPy和Matplotlib等函数包的使用实验 ...
- QR code 二维码基础入门教程(二)
QR code 二维码基础入门教程(二) 承接上文,让我们继续下面的步骤 纠错码编码 先说说纠错容量 纠错码可以纠正两种错误: 拒读错误(错误码位置已知),是一个没有扫到或者无法译码的符号字符,需要一 ...
- QR code 二维码基础入门教程
QR code 二维码基础入门教程 本文为 QR Code Tutorial: Introduction 的总结,详细内容请查看原文 Introduction History and Informat ...
- php语言入门,php语言基础入门
php语言基础入门 导语:PHP语法吸收了C语言.Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域.下面是PHP语言基础人们知识,欢迎参考! 1. 代码嵌在内 2.输出函数ech ...
- Lua语言基础入门 (Lua学习一)
Lua语言快速入门 这篇博客主要是简单的讲解一下Lua的基础知识,涉及的东西不是很深,提供一些学习的思路,对具体的技术不展开介绍,网上资料很多写的都比我好,仅仅为了使用Lua,而不是做基于Lua的项目 ...
最新文章
- 根本停不下来,原来学计算机可以这么有趣
- python函数结构图_Python数据结构与算法之图结构(Graph)实例分析
- 人工智能与主体时代变革
- 对话OTTVerse创始人Krishna Rao Vijayanagar:创业之初,挑战与机遇并存
- atthesametime啥意思_eachother造句并翻译
- java鼠标左键按下后拖动实现多选_鼠标拖拽多选功能
- css样式变 及实际用法
- 连续自然数和(洛谷-P1147)
- 【JavaScript】查漏补缺 —数组中reduce()方法
- Interllij IDEA启动Jrebe因为中文路径失败
- 安装过mysql和p_MAC下安装与配置MySQL
- 央行降息开始 房价下跌不行也要行
- .net Cache 需要注意的地方
- jszip 解压压缩包_JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解
- 【优化调度】基于NSGAII算法的车辆充电调度策略研究含Matlab代码
- 解决win10删除文件时找不到该项目的问题
- 计算机论文注释范例,论文注释的标准格式范例(范例详解论文正确书写规范)...
- git中将多次commit合并为一次commit
- 梁宁产品思维学习笔记
- tpshop——安装使用
热门文章
- WebRTC / Jitsi / 使用 jitsi 官方源安装内网演示环境过程
- Cpp 对象模型探索 / 类普通成员函数的调用方式
- C51单片机其他名词英文全称
- vivado2017.4启动时提示的“error when launching'E:\vivado':Launcher time out”的问题
- java main是多线程的吗_Java多线程之线程及其常用方法
- Object 转 String
- Hadoop源码解读系列目录
- HPU-- 1190 確率
- linux如何在shell中自动生成1到100的数组
- 【01】什么是AJAX