Go-基础知识

本文内容基于《Go语言核心编程》,李文塔著。


1 基础知识

1.1 语言简介

1.1.1 Go语言的诞生背景

1.1.2 Go语言的特性

1.2 初始Go程序

1.3 Go语法单元

1.4 变量和常量

1.4.1 变量

1.4.2 常量

1.5 基本数据类型

1.6 复合数据类型

1.6.1 指针

1.6.2 数组

1.6.3 切片

1.6.4 map

1.6.5 struct

1.7 控制结构

1.7.1 if语句

1.7.2 switch语句

1.7.3 for语句

1.7.4 标签和跳转


1 基础知识

1.1 语言简介

1.1.1 Go语言的诞生背景

  1. 当前编程语言对兵法的支持不是很好,不能很好地发挥多核CPU的威力;
  2. 程序规模越来越大,编译速度越来越慢;
  3. 现有的编程语言设计越来越复杂,某些特性的实现不怎么优雅。

1.1.2 Go语言的特性

特性集合 特性项 Go C Java
基础语法 关键字和保留字 25个 ANSI 32个 大于48个
控制结构 支持顺序、循环、分支 支持顺序、循环、分支 支持顺序、循环、分支
类型系统 动、静特性 静态语言,支持运行时动态类型 静态语言 静态语言
强、弱特性 强类型 弱类型 强类型
隐式类型推导 支持
类型安全 类型安全 非类型安全 类型安全
自定义数据类型 支持type自定义 struct 通过类/接口实现自定义类型和行为
抽象 函数 支持 支持 支持
面向对象支持 类型组合支持面向对象 struct内嵌函数指针支持 类/接口
接口 Duck模型 void*间接支持 显式声明
多态 通过接口支持 void*间接支持 接口及继承关系支持
元编程 泛型支持
反射支持
平台和运行模式 编译模式 编译成可执行程序 编译成可执行程序 编译成中间字节码
运行模式 直接运行 直接运行 虚拟机加载执行
内存管理 支持自动垃圾回收 手动管理 支持自动垃圾回收
并发支持 协程(语言原生支持) OS线程(库支持协程) Java线程(JVM内部映射到OS线程)
交叉编译 支持 支持 中间代码无交叉编译必要
跨平台 支持 支持 原生跨平台
语言软实力 标准库和第三方库 丰富,发展很快 很丰富 很丰富
框架 丰富,发展很快 很丰富 很丰富
语法兼容性 向前兼容性好 向前兼容性好 向前兼容性好
  影响力 社区活跃,Google背书 40多年宝刀未老 社区活跃,近几年受Oracle控制
应用领域 云计算基础设施软件、中间件、区块链 OS及系统软件 企业级应用、大数据、移动端

1.2 初始Go程序

  • hello.go
package main

import "fmt"

func main() {
	fmt.Println("hello world")
}
  • 编译
go build hello.go
  • 运行
./hello

1.3 Go语法单元

  • iota:用在连续的枚举类型的声明中
  • 操作符:不但起到分隔token的作用,本身也是一个token,如:=、+等
  • 分隔符:仅仅起到分隔token的作用,本身不是token

1.4 变量和常量

1.4.1 变量

变量使用一个名称来绑定一块内存地址,该内存地址中存放的数据类型由定义变量时指定的类型决定,该内存地址里面存放的内容可以改变,Go的基本类型变量声明有两种:

  • 显式的完整声明
var varName dataType [= value]
// 如果不指定初始值,Go默认将该变量初始化为类型的零值
// Go的变量声明后就会立即为其分配空间

var a int = 1
var a int = 2 * 3
var a int = b
  • 短类型声明
varName := value
// 只能出现在函数内(包括方法内)
// Go编译器自动进行数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值