类型

go是**静态类型**语言,不能在运行期改变变量类型。

变量定义

  • 使用var定义变量,自动初始化为零值;
  • 如果提供初始值,可省略变量类型;
  • 函数内部可使用:=定义变量。
var x int // 自动初始化为0
var f float32 = 1.6
var s = "abc" func main(){
x := 123
}

多变量

  • 可一次定义多个变量;
  • 多变量赋值时,先计算所有相关值,然后再从左到有依次赋值
var x, y, z int
var s, n = "abc", 123 data, i := [3]int{0, 1, 2}, 0
i, data[i] = 2, 100 //(i=0) -> (i=2), (data[0]=100)

const

  • 常量值必须是编译期可确定的数字、字符串、布尔值
const (
s = "abc"
x // x = "abc" 常量组中,如不提供类型和初始值,那么与上一常量相同 b = len(a)
c = unsafe.Sizeof(b) // 可以使用len, cap, unsafe.Sizeof等编译器可确定结果的函数返回值
)

枚举

const (
Sunday = iota // 0
Monday // 1
..
) const (
_ = iota // iota =0
KB int64 = 1 << (10 * iota) // iota = 1
MB // 与KB表达式相同,但iota = 2
GB
)

变量默认值

类型 默认值 长度
bool false 1
byte 0 1
rune 0 4
int/uint 0 -
float* 0.0 -
string "" -
slice / map / channel nil -
interface/function nil -
array / stuct - -

类型转换

  • 不支持隐式转换
var b byte = 100
var n int = (int)(b) // 显示转换,建议(type) a := 100
if a { // 不能使用其他类型当bool使用
println("true")
}

指针

与c类似,略。

数组

var a [4]int = [4]int{1,2} //未初始化的元素将被赋为零值
var b = [...]string{"hello"} //长度为1
c := [...]int{99:-1} //定义了100个元素,最后一个初始化为-1

说明

  • 如果数组的元素类型是可以互相比较的,那么数组类型也可以互相比较
  • 当两个数组的所有元素相等,那么数组相等

表达式

range

[注意事项](https://studygolang.com/articles/12958)

switch

  • 可省略break,默认自动终止。
x := []int{1, 2, 3}
i := 2 switch i {
case x[1]:
println("a") // 自动终止
case ..
} switch { // 可省略条件
case x > 0 :
...
} switch i := 2; { // 带初始化语句
...
}

golang知识精要(二)的更多相关文章

  1. golang知识精要(一)

    一.第一章 命令行参数可通过os.Args访问,os.Args是切片 切片遵循左闭右开原则,如sl[1:3]不包含下标为3的元素 for循环两种方式 方式一: for initial; conditi ...

  2. java知识精要(二)

    java知识精要(一) 集合 Iterable v.s. Iterator 两者都是接口,在Collection继承的是Iterable. Iterable表达了集合具备迭代访问的能力,而Iterat ...

  3. Asp.net mvc 知多少(二)

    本系列主要翻译自<ASP.NET MVC Interview Questions and Answers >- By Shailendra Chauhan,想看英文原版的可访问http:/ ...

  4. Golang中的坑二

    Golang中的坑二 for ...range 最近两周用Golang做项目,编写web服务,两周时间写了大概五千行代码(业务代码加单元测试用例代码).用Go的感觉很爽,编码效率高,运行效率也不错,用 ...

  5. golang 反射应用(二)

    golang反射应用(二) package test import ( "reflect" "testing" ) //定义适配器 func TestRefle ...

  6. Golang 处理 Json(二):解码

    golang 编码 json 还比较简单,而解析 json 则非常蛋疼.不像 PHP 一句 json_decode() 就能搞定.之前项目开发中,为了兼容不同客户端的需求,请求的 content-ty ...

  7. Golang入门教程(二)Ubuntu16.04下安装golang(实例:Golang 定时任务管理器)

    通过两种方式安装 一.通过apt-get安装1.安装 sudo apt-get install golang 2.设置GOPATH变量 GOPATH是扩展库的目录,Go先搜索标准库目录,然后搜索GOP ...

  8. Golang-interface(二 接口与nil)

    github: https://github.com/ZhangzheBJUT/blog/blob/master/nil.md 一 接口与nil 前面解说了go语言中接口的基本用法,以下将说一说nil ...

  9. T-SQL:毕业生出门需知系列(二)

    第2课 检索数据 2.1 SELECT 语句 用途:从一个或多个表中检索数据信息 关键字:作为SQL组成部分的保留字.关键字不能用作表或列的名字. 为了使用SELECT检索表数据,必须至少给出两条信息 ...

随机推荐

  1. sql server 大数据, 统计分组查询,数据量比较大计算每秒钟执行数据执行次数

    -- 数据量比较大的情况,统计十分钟内每秒钟执行次数 ); -- 开始时间 ); -- 结束时间 declare @num int; -- 结束时间 set @begintime = '2019-08 ...

  2. 攻防世界 高手进阶区 web cat

    php cURL CURLOPT_SAFE_UPLOAD django DEBUG mode Django使用的是gbk编码,超过%F7的编码不在gbk中有意义 当 CURLOPT_SAFE_UPLO ...

  3. shell公共函数functions

    checkpid:检查是否已存在pid,如果有一个存在,返回0(通过查看/proc目录) daemon:启动服务 killproc:杀死某个进程 pidfileofproc:寻找某个进程的pid pi ...

  4. B端产品需求文档怎么写?

    B端,或者2B,一般指的是英文中的 to busniss,中文即面向企业的含义.与B端相对应的,是C端,或者2C,同样指的是英文中的 to customer,即面向消费者的意思.因此,人们平常所说的B ...

  5. ng-zorror-antd------Input输入框

    使用 ng-zorror-antd 来美化界面,带着问题挖掘技术: 一:基本使用 效果图: 问题一:如何人为控制输入框长度,如上效果图,让一个输入框长,一个输入框短?(注意:该输入框是最简单的输入框, ...

  6. spark 修改默认log4j.properties 配置

    spark-submit \ --files ${CONF_DIR}/log4j-driver.properties,${CONF_DIR}/log4j-executor.properties \ - ...

  7. JS中把其他类型转换成字符串的三种方法

    1.toString()方法 toString()方法返回的是相应值的字符串表现 数值.布尔值.对象和字符串值都有toString()方法,但是null和undefined值没有这个方法 例子: va ...

  8. OpenCV 学习笔记(14)为轮廓创建边界旋转框和椭圆

    https://docs.opencv.org/3.4/de/d62/tutorial_bounding_rotated_ellipses.html 不旋转 #include "opencv ...

  9. selenium--更改标签的属性值

    前戏 在进行web自动化的时候,我们有时需要获取元素的属性,有时需要添加,有时需要删除,这时候就要通过js来进行操作了 实战 from selenium import webdriver import ...

  10. 洛谷P1531 I Hate It题解

    题目背景 很多学校流行一种比较的习惯.老师们很喜欢询问,从某某到某某当中,分数最高的是多少.这让很多学生很反感. 题目描述 不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的 ...