2.go语言入门----变量类型、声明变量、数组、切片
基本变量类型
介绍几种基本的变量类型:字符串、int、float、bool
package main
import (
"fmt"
)
// 列举几种非常基本的数据类型
func main() {
fmt.Println("go" + "lang") // 允许使用“+”来连接字符串
fmt.Println("1+1=", 1+1)
fmt.Println("7.0/3.0=", 7.0/3.0)
fmt.Println(true && false) // 需要注意的是,go中不允许将整形强制转换成布尔型
fmt.Println(true || false)
fmt.Println(!true)
}
字符串
可以使用反引号来定义多行字符串
var (
str string = `aaa
aaa
aaa
aaa
aaa `
) stdOut:
aaa
aaa
aaa
aaa
aaa
定义变量
package main
import "fmt"
func main() {
var a = "initial" // 使用关键字var来定义变量,可以不显示指定变量类型,go会自动判断
fmt.Println(a)
var b, c int = 1, 2 // 指定变量类型时,类型要放在变量名的后面
fmt.Println(b, c)
var d = true
fmt.Println(d)
var e int // int的默认值为0
fmt.Println(e)
f := "apple" // 可以使用“:=”来省略关键字var,这种方式一般用的比较多,这里也不用显示的指定变量类型
fmt.Println(f)
}
要点总结
go是一门强类型的语言,但是定义变量的时候却可以省略变量类型,由go自己推导出来
定义变量的几种方式
var =
var =
:=
在go语言中,通常是使用var关键字来定义全局变量,使用":="来定义局部变量
数组
数组是一种数据类型的固定长度序列
package main
import "fmt"
func main() {
var a [5]int // 这里初始化了一个变量,发现默认值是数组中变量类型的默认值
fmt.Println("emp:", a)
a[4] = 100 // 可以通过索引对数组中的指定元素赋值
fmt.Println("set:", a)
fmt.Println("get:", a[4])
fmt.Println("len:", len(a))
b := [5]int{1, 2, 3, 4, 5} // 初始化数组的同时赋值
fmt.Println("dcl:", b)
var twoD [2][3]int // 定义多维数组
for i := 0; i < 2; i++ {
for j := 0; j < 3; j++ {
twoD[i][j] = i + j
}
}
fmt.Println("2d: ", twoD)
}
stdOut:
emp: [0 0 0 0 0]
set: [0 0 0 0 100]
get: 100
len: 5
dcl: [1 2 3 4 5]
2d: [[0 1 2] [1 2 3]]
要点总结
- 数组中元素的默认值为元素类型的默认值
- 数组中的元素类型要一致
- 可以通过索引对数组指定元素进行操作
- 可以定义多维数组
- var [n] = [n]{1,2,3,4.....}
切片
切片类似于数组,但其长度可变
package main
import "fmt"
func main() {
s := make([]string, 3) // 定义了一个长度为3的切片
fmt.Println("emp:", s) // 这里打印一下发现其中的值为空的,如果是数组的话会是3个0
s[0] = "a"
s[1] = "b"
s[2] = "c"
fmt.Println("set:", s)
fmt.Println("get:", s[2])
fmt.Println("len:", len(s)) // 使用起来也和数组一样,可以通过索引使用
s = append(s, "d") // 通过append函数来拓展切片,但要注意这里需要重新赋值,否则原来的是不会变得
s = append(s, "e", "f") // 可以一次拓展多个值
fmt.Println("apd:", s)
c := make([]string, len(s))
copy(c, s) // 使用copy可以复制切片
fmt.Println("cpy:", c)
l := s[2:5] // 类似python,通过 “:” 来限制索引
fmt.Println("sl1:", l)
l = s[:5]
fmt.Println("sl2:", l)
l = s[2:]
fmt.Println("sl3:", l)
t := []string{"g", "h", "i"} // 定义的同时初始化
fmt.Println("dcl:", t)
twoD := make([][]int, 3) // 二维切片
for i := 0; i < 3; i++ {
innerLen := i + 1
twoD[i] = make([]int, innerLen)
for j := 0; j < innerLen; j++ {
twoD[i][j] = i + j
}
}
fmt.Println("2d: ", twoD)
}
stdOut:
emp: [ ]
set: [a b c]
get: c
len: 3
apd: [a b c d e f]
cpy: [a b c d e f]
sl1: [c d e]
sl2: [a b c d e]
sl3: [c d e f]
dcl: [g h i]
2d: [[0] [1 2] [2 3 4]]
常用方法
长度 len()
使用len(切片名) 来得到切片长度
append()和copy()
append(numbers, 1) // 将1添加到numbers的末尾
copy(numbers1, numbers2) //将numbers2复制到numbers1
2.go语言入门----变量类型、声明变量、数组、切片的更多相关文章
- js声明引入和变量声明和变量类型、变量
问题: 在网页的发展历程中,发现网页不能对用户的数据进行自动校验,和提供一些特效. 解决: 使用javascript. 作用 可以让网页和用户进行直接简单的交互. 可以让网页制作特效和动画. 声明js ...
- Go使用变量类型声明和方法的注意事项
当我们通过把一个现有(非interface)的类型定义为一个新的类型时,新的类型不会继承现有类型的方法. 神马意思?来一段简短错误的代码: package main import "sync ...
- 【C语言】复杂类型声明
原文地址: http://blog.csdn.net/wangweixaut061/article/details/6549768 原文不让转载,但实在是有用,就拷贝了一小部分过来.全文请点开链接. ...
- C语言随笔_类型声明
有位同学说,“老师,我运行如下代码,结果报错了” #include <iostream.h> int main(){ char c, int b; return 0; } 报错结果是 ...
- Python 变量类型及变量赋值
在 Python 中,变量不一定占用内存变量.变量就像是对某一处内存的引用,可以通过变量访问到其所指向的内存中的值,并且可以让变量指向其他的内存.在 Python 中,变量不需要声明,但是使用变量之前 ...
- MySQL服务 - MySQL变量类型及变量设置
一.MySQL变量类型: MySQL通过变量来定义当前服务器的特性,保存状态信息等.我们可以通过手动更改变量的值来配置MySQL,也可以通过变量获得MySQL的当前状态信息.MySQL的变量类型可以从 ...
- js基础知识--变量类型和变量计算
提问: JS中使用typeof能得到的哪些类型 何时使用===何时使用== JS中有哪些内置函数 JS变量按照存储方式区分为哪些类型,并描述其特点 如何理解JSON 涉及知识点:(1)变量类型 值类型 ...
- Go语言学习之4 递归&;闭包&;数组切片&;map&;锁
主要内容: 1. 内置函数.递归函数.闭包2. 数组与切片3. map数据结构4. package介绍 5. 排序相关 1. 内置函数.递归函数.闭包 1)内置函数 (1). close:主要用来关闭 ...
- C语言入门-结构类型
一.声明结构类型 #include <stdio.h> int main(int argc, char const *argv[]) { // 声明结构类型 struct date { i ...
- Python变量类型及变量
python是解释性语言 什么是解释性语言 就相当于你去饭店,你点了10道菜,他做好1道给你上1道.解释一行,执行一行.速度上不如编译性语言快. 什么是编译性语言 就相当于去饭店吃饭,你点了10道菜, ...
随机推荐
- CSS3+JS切割轮播图
以下说明数据,是指有4张图片的轮播图,分别切割成4张. 首先,做成单张切换的立体效果,即通过旋转,确定四张图片的位置,分别是一个立方体的上下前后的图片翻转移动角度. .box ul li:nth-ch ...
- 解同余式ax ≡ c(mod m)
将式子变形为 ax-c=my 可以看出原式有解当且仅当线性方程ax-my=c有解 设g = gcd(a, m) 则所有形如ax-my的数都是g的倍数 因此如果g不整除c则原方程无解. 下面假设g整除c ...
- [转] POJ字符串分类
POJ 1002 - 487-3279(基础)http://acm.pku.edu.cn/JudgeOnline/problem?id=1002题意:略解法:二叉查找数,map,快排... POJ 1 ...
- kettle Java Filter(表达式过滤)
- 【HDOJ】2149 Public Sale
看Discuss说是博弈论,没学到这个分类.不过仔细想了想,发现.如果m<=n,那么可能结果为m,m+1...n.否则,如果m%(n+1) == 0,那么无论如何都会输,因为无论先报价什么数,如 ...
- Android系统的进程分类
1.前台进程:即当前正在前台运行的进程,说明用户当前正在与通过该进程与系统进行交互,所以该进程为最重要的进程,除非系统的内容已经到不堪重负的情况,否则系统是不会将改进程终止的.2.可见进程:一般还是显 ...
- 实现一个简单的http请求工具类
OC自带的http请求用起来不直观,asihttprequest库又太大了,依赖也多,下面实现一个简单的http请求工具类 四个文件源码大致如下,还有优化空间 MYHttpRequest.h(类定义, ...
- Hdu 3410 【单调队列】.cpp
题意: 给出一个数组,问你对于第i个数,从最后一个比它大的数到它之间比它小的数中最大的那个数的下标,以及它右边到第一个比它大的数中比它小的数中最大的那一个数的下标<下标从1开始>. eg: ...
- 201521123100 《Java程序设计》 第2周学习总结
一. 本章学习总结 1.本周学习了Java语言中各种数据类型以及运算符,其中大部分还是和c语言差不多,发现了各种语言的相通性 2.进一步学习了eclipse的功能和使用方法,学会了如何将其与码云连接更 ...
- 大数据学习系列之八----- Hadoop、Spark、HBase、Hive搭建环境遇到的错误以及解决方法
前言 在搭建大数据Hadoop相关的环境时候,遇到很多了很多错误.我是个喜欢做笔记的人,这些错误基本都记载,并且将解决办法也写上了.因此写成博客,希望能够帮助那些搭建大数据环境的人解决问题. 说明: ...