1.变量

package main
import "fmt"
func main() {
var 声明 个或者多个变量。 var a string = "initial"
fmt.Println(a)
你可以申明一次性声明多个变量。 var b, c int = ,
fmt.Println(b, c)
Go 将自动推断已经初始化的变量类型。 var d = true
fmt.Println(d)
声明变量且没有给出对应的初始值时,变量将会初始化为零值 。例如,一个 int 的零值是 。 var e int
fmt.Println(e)
:= 语句是申明并初始化变量的简写,例如这个例子中的 var f string = "short"。 f := "short"
fmt.Println(f)
}

2.常量

package main
import "fmt"
import "math"
const 用于声明一个常量。 const s string = "constant"
func main() {
fmt.Println(s)
const 语句可以出现在任何 var 语句可以出现的地方 const n =
常数表达式可以执行任意精度的运算 const d = 3e20 / n
fmt.Println(d)
数值型常量是没有确定的类型的,直到它们被给定了一个类型,比如说一次显示的类型转化。 fmt.Println(int64(d))
当上下文需要时,一个数可以被给定一个类型,比如变量赋值或者函数调用。举个例子,这里的 math.Sin函数需要一个 float64 的参数。 fmt.Println(math.Sin(n))
}

3.循环

普通循环

package main
import "fmt"
func main() {
最常用的方式,带单个循环条件。 i :=
for i <= {
fmt.Println(i)
i = i +
}
经典的初始化/条件/后续形式 for 循环。 for j := ; j <= ; j++ {
fmt.Println(j)
}
不带条件的 for 循环将一直执行,直到在循环体内使用了 break 或者 return 来跳出循环。 for {
fmt.Println("loop")
break
}
}

range循环

arr := []int{, , }
fmt.Println(arr)
for _, v := range arr {
fmt.Println(v)
}

对数组使用range会自动迭代,并在每次迭代返回两个值,第一个是索引,第二个是值,但是在go语言中,只要定义的变量就必须使用,而且我们常常用不到索引,那么怎么办呢?

用单下划线来替代索引,这样就省略了变量的定义。

4.条件

package main
import "fmt"
func main() {
这里是一个基本的例子。 if % == {
fmt.Println("7 is even")
} else {
fmt.Println("7 is odd")
}
你可以不要 else 只用 if 语句。 if % == {
fmt.Println("8 is divisible by 4")
}
在条件语句之前可以有一个语句;任何在这里声明的变量都可以在所有的条件分支中使用。 if num := ; num < {
fmt.Println(num, "is negative")
} else if num < {
fmt.Println(num, "has 1 digit")
} else {
fmt.Println(num, "has multiple digits")
}
}

5.switch

 package main
import "fmt"
import "time"
func main() {
一个基本的 switch。 i :=
fmt.Print("write ", i, " as ")
switch i {
case :
fmt.Println("one")
case :
fmt.Println("two")
case :
fmt.Println("three")
}
在一个 case 语句中,你可以使用逗号来分隔多个表达式。在这个例子中,我们很好的使用了可选的default 分支。 switch time.Now().Weekday() {
case time.Saturday, time.Sunday:
fmt.Println("it's the weekend")
default:
fmt.Println("it's a weekday")
}
不带表达式的 switch 是实现 if/else 逻辑的另一种方式。这里展示了 case 表达式是如何使用非常量的。 t := time.Now()
switch {
case t.Hour() < :
fmt.Println("it's before noon")
default:
fmt.Println("it's after noon")
}
}

6.数组

 package main
import "fmt"
func main() {
这里我们创建了一个数组 a 来存放刚好 个 int。元素的类型和长度都是数组类型的一部分。数组默认是零值的,对于 int 数组来说也就是 。 var a []int
fmt.Println("emp:", a)
我们可以使用 array[index] = value 语法来设置数组指定位置的值,或者用 array[index] 得到值。 a[] =
fmt.Println("set:", a)
fmt.Println("get:", a[])
使用内置函数 len 返回数组的长度 fmt.Println("len:", len(a))
使用这个语法在一行内初始化一个数组 b := []int{, , , , }
fmt.Println("dcl:", b)
数组的存储类型是单一的,但是你可以组合这些数据来构造多维的数据结构。 var twoD [][]int
for i := ; i < ; i++ {
for j := ; j < ; j++ {
twoD[i][j] = i + j
}
}
fmt.Println("2d: ", twoD)
}

7.切片

 package main
import "fmt"
func main() {
不像数组,slice 的类型仅由它所包含的元素决定(不像数组中还需要元素的个数)。要创建一个长度非零的空slice,需要使用内建的方法 make。这里我们创建了一个长度为3的 string 类型 slice(初始化为零值)。 s := make([]string, )
fmt.Println("emp:", s)
我们可以和数组一样设置和得到值 s[] = "a"
s[] = "b"
s[] = "c"
fmt.Println("set:", s)
fmt.Println("get:", s[])
如你所料,len 返回 slice 的长度 fmt.Println("len:", len(s))
作为基本操作的补充,slice 支持比数组更多的操作。其中一个是内建的 append,它返回一个包含了一个或者多个新值的 slice。注意我们接受返回由 append返回的新的 slice 值。 s = append(s, "d")
s = append(s, "e", "f")
fmt.Println("apd:", s)
Slice 也可以被 copy。这里我们创建一个空的和 s 有相同长度的 slice c,并且将 s 复制给 c。 c := make([]string, len(s))
copy(c, s)
fmt.Println("cpy:", c)
Slice 支持通过 slice[low:high] 语法进行“切片”操作。例如,这里得到一个包含元素 s[], s[],s[] 的 slice。 l := s[:]
fmt.Println("sl1:", l)
这个 slice 从 s[] 到(但是包含)s[]。 l = s[:]
fmt.Println("sl2:", l)
这个 slice 从(包含)s[] 到 slice 的后一个值。 l = s[:]
fmt.Println("sl3:", l)
我们可以在一行代码中声明并初始化一个 slice 变量。 t := []string{"g", "h", "i"}
fmt.Println("dcl:", t)
Slice 可以组成多维数据结构。内部的 slice 长度可以不同,这和多位数组不同。 twoD := make([][]int, )
for i := ; i < ; i++ {
innerLen := i +
twoD[i] = make([]int, innerLen)
for j := ; j < innerLen; j++ {
twoD[i][j] = i + j
}
}
fmt.Println("2d: ", twoD)
}

https://www.cnblogs.com/liuzhongchao/p/9159896.html 这个博客讲的好

go语言学习——变量、常量、循环、条件、switch、数组和切片的更多相关文章

  1. Go语言学习笔记五: 条件语句

    Go语言学习笔记五: 条件语句 if语句 if 布尔表达式 { /* 在布尔表达式为 true 时执行 */ } 竟然没有括号,和python很像.但是有大括号,与python又不一样. 例子: pa ...

  2. 《python基础教程(第二版)》学习笔记 语句/循环/条件(第5章)

    <python基础教程(第二版)>学习笔记 语句/循环/条件(第5章) print 'AB', 123 ==> AB 123 # 插入了一个空格print 'AB', 'CD' == ...

  3. Go语言学习之常量(The way to go)

    生命不止,继续go go go . 上一篇博客<Go语言学习之变量(The way to go)介绍了go中的变量,今天就介绍常量. const关键字 跟c++中一样,go中同样具有const关 ...

  4. Python语言学习前提:循环语句

    一.循环语句 1.循环语句:允许执行下一个语句或语句组多次 2. 循环类型 3. 循环控制语句 4. while 循环语句 a.while循环语句:在某个条件下,循环执行某段程序,以处理需要重复处理的 ...

  5. 【C语言学习】-03 循环结构

    本文目录 循环结构的特点 while循环 do...while循环 for循环 回到顶部 一.循环结构的特点 程序的三种结构: 顺序结构:顺序执行语句 分支结构:通过进行一个判断在两个可选的语句序列之 ...

  6. Java学习——增强for循环、switch

    增强for循环 Java5引入了一种主要用于数组的增强型for循环. 例子 public class ForTest { public static void main(String args[]){ ...

  7. Go 语言基础——变量常量的定义

    go语言不支持隐式类型转换,别名和原有类型也不能进行隐式类型转换 go语言不支持隐式转换 变量 变量声明 var v1 int var v2 string var v3 [10]int // 数组 v ...

  8. c语言学习笔记 for循环的结构

    其实感觉for循环没有while循环那么直白好理解. for(i=0;i<n;i++) { dosth(); } i=0是i的初始值. i<n是循环进行的条件. i++是每次循环要做的事情 ...

  9. C语言学习笔记(一):数组传递时退化为指针

    这几天闲来无事,写了一个数组元素排序函数如下: #include <stdio.h> #include <stdlib.h> void ArraySort(int array[ ...

随机推荐

  1. mysql补0操作有什么意义?

    比如我们在创建int的时候会使用int(10)这样的方式来定义某一个列,但是这样定义是没有任何意义的. Create Table showzerofill(Val1 INT(5) ZEROFILL, ...

  2. leetcode-mid-sorting and searching-34 Search for a Range

    mycode   63.98% class Solution(object): def searchRange(self, nums, target): """ :typ ...

  3. 安装telnet服务

    一.安装telnet1.检测telnet-server的rpm包是否安装 [root@localhost ~]# rpm -qa telnet-server 若无输入内容,则表示没有安装.出于安全考虑 ...

  4. Spring 缓存注解 SpEL 表达式解析

    缓存注解上 key.condition.unless 等 SpEL 表达式的解析 SpEl 支持的计算变量: 1)#ai.#pi.#命名参数[i 表示参数下标,从 0 开始] 2)#result:Ca ...

  5. linux查看硬盘信息

    1. 通过内核查看硬盘信息 cat /sys/block/sda/device/model cat /sys/block/sda/device/vendor 2. 用过hdparm命令查看 hdpar ...

  6. 系统分析与设计HW8

    描述软件架构与框架之间的区别与联系 软件架构是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计.架构模式(style)是特定领域常见问题的解决方案. 框架是特定语言和技术的架构应用 ...

  7. spss中如何处理极端值、错误值

    spss中如何处理极端值.错误值 spss中录入数据以后,第一步不是去分析数据,而是要检验数据是不是有录入错误的,是不是有不合常理的数据,今天我们要做一个描述性统计,进而查看哪些数据是不合理的.下面是 ...

  8. Apache web服务器(LAMP架构)

    1.apache介绍 1).世界上使用率最高的网站服务器,最高时可达70%:官方网站:apache.org 2).http 超文本协议 HTML 超文本标记语言 3).URL 统一资源定位符 http ...

  9. TCP中SYN洪水攻击

    在查看TCP标识位SYN时,顺便关注了一下SYN Flood,从网上查阅一些资料加以整理,SYN洪水攻击利用TCP三次握手. 1.SYN洪水介绍 当一个系统(客户端C)尝试和一个提供了服务的系统(服务 ...

  10. 解析jmeter阶梯加压与请求的计算

    用百度做例子 我们设置阶梯加压线程组的请求参数,如下图 上图表示 1:每隔2秒钟,会在1秒内启动5个线程 2:每次线程加载之后都会运行2s然后开始下一次线程加载 3:最终会加载50个线程并持续运行30 ...