赞
踩
GO 基本介绍
GO 基本概念
GO 语言特性
GO 程序的基本结构
GO 标识符 关键字 变量 常量
GO 数据类型
GO 操作符 与 日期
GO 流程控制
GO 函数介绍
GO 闭包的介绍
Go 语言诞生于谷歌,由计算机领域的三位宗师级大牛 Rob Pike、Ken Thompson 和 Robert Griesemer 写成。由于出身名门,Go 在诞生之初就吸引了大批开发者的关注。诞生十年以来,已经涌出了很多基于 Go 的应用。就在不多久之前,知乎也舍弃了 Python,转 用Go 重构推荐系统 。
谷歌前员工 Jake Wilson 认为,比起大家熟悉的 Python,Go 语言其实有很多优良特性,很多时候都可以代替 Python,他已经在很多任务中使用 Go 语言替代了 Python。那么 Go 语言到底有着什么样的独特魅力 ?让我们一起来了解一下吧!
对于一门只有十年历史的新语言,Go 的发展势头相当迅猛,容器界的扛把子 Docker 就是用 Go 写的,国内也有不少团队广泛使用 Go。近日,HackerRank 在社区发起了程序员技能调查,来自 100 多个国家、超过 70000 名开发者参与其中。调查结果显示,2019 年,程序员最想学习的编程语言 Top 3 分别是 Go、Kotlin 和 Python,其中 Go 以 37.2% 的比例排在首位。
但 Go 要想撼动编程界的常青树 Java 二十多年的地位无疑难度颇大。据 HackerRank 数据显示,2018 年,Java 在开发者最受欢迎的编程语言排行榜中仍然排名第 2,Python 排名第 4,Go 排名第 13,距离第一名 JavaScript 还有不小的差距。
Golang 目录结构划分
a. 个人项目
b. 公司项目
包的概念
a. 和python⼀样,把相同功能的代码放到⼀个⽬录,称之为包
b. 包可以被其他包引⽤
c. main包是⽤来⽣成可执⾏⽂件,每个程序只有⼀个main包
d. 包的主要⽤途是提⾼代码的可复⽤性
基本命令的介绍
a. go run 快速执⾏go⽂件,就像执⾏脚本⼀样
b. go build 编译程序,⽣成⼆进制可执⾏⽂件
c. go install 安装可执⾏⽂件到bin⽬录
d. go test 执⾏单元测试或压⼒测试
e. go env 显示go相关的环境变量
f. go fmt 格式化源代码
GO 程序的结构
a. go源码按package进⾏组织,并且package要放到⾮注释的第⼀⾏
b. ⼀个可执⾏程序只有⼀个main包和⼀个main函数
c. main函数是程序的执⾏⼊⼝
垃圾回收
a. 内存⾃动回收,再也不需要开发⼈员管理内存
b. 开发⼈员专注业务实现,降低了⼼智负担
c. 只需要new分配内存,不需要释放,golang语⾔特性
天然并发
a. 从语⾔层⾯⽀持并发,⾮常简单。只需要go⼀下
b. goroutine,轻量级线程,创建成千上万个goroute成为可能
- func calc() { //⼤量计算 }
- func main() { go calc() }
channel
a. 管道,类似unix/linux中的pipe
b. 多个goroute之间通过channel进⾏通信
c. ⽀持任何类型
多返回值
a. ⼀个函数返回多个值
编译型语⾔
a. 性能只⽐C语⾔差10%
b. 开发效率和python、php差不多
a. 任何⼀个代码⽂件⾪属于⼀个包
- package main
- import “fmt”
- func main() {
- fmt.Println(“hello, world”)
- }
b. import 关键字,引⽤其他包
c. 开发可执行程序,package main, 并且有且只有⼀个main⼊⼝函数
d. 包中函数调⽤
同一个包中函数,直接用函数名调, 不同包中函数,通过包名+点+ 函数名进⾏调⽤
e. 包访问控制规则
大写意味着这个函数/变量是可导出,小写意味着这个函数/变量是私有的,包外部不能访问
标识符
标识符是指Go语言对各种变量、方法、函数等命名时使用的字符序列,标识符由若干个字母、下划线_、和数字组成,且第一个字符必须是字母。通俗的讲就是凡可以自己定义的名称都可以叫做标识符。
下划线_是一个特殊的标识符,称为空白标识符,它可以像其他标识符那样用于变量的声明或赋值(任何类型都可以赋值给它),但任何赋给这个标识符的值都将被抛弃,因此这些值不能在后续的代码中使用,也不可以使用_作为变量对其它变量进行赋值或运算。
在使用标识符之前必须进行声明,声明一个标识符就是将这个标识符与常量、类型、变量、函数或者代码包绑定在一起。在同一个代码块内标识符的名称不能重复。
标识符的命名需要遵守以下规则:
a. 由 26 个英文字母、0~9、_组成;
b. 不能以数字开头,例如 var 1num int 是错误的;
c. Go语言中严格区分大小写;
d. 标识符不能包含空格;
d. 不能以系统保留关键字作为标识符,比如 break,if 等等。
命名标识符时还需要注意以下几点:
a. 标识符的命名要尽量采取简短且有意义;
b. 不能和标准库中的包名重复;
c. 为变量、函数、常量命名时采用驼峰命名法,例如 stuName、getVal;
当然Go语言中的变量、函数、常量名称的首字母也可以大写,如果首字母大写,则表示它可以被其它的包访问(类似于 Java 中的 public);如果首字母小写,则表示它只能在本包中使用 (类似于 Java 中 private)。
在Go语言中还存在着一些特殊的标识符,叫做预定义标识符,如下表所示:
预定义标识符一共有 36 个,主要包含Go语言中的基础数据类型和内置函数,这些预定义标识符也不可以当做标识符来使用。
了解规则后,判断下面标识符哪个是错误的:
A. 88ab(错) B. _ab28 C. ab_28
关键字
关键字是Go语⾔预先定义好的,有特殊含义的标识符。共25 个。
变量
语法:var identifier type
- var a int
- var b string
- var c bool
- var d int = 8
- var e string = “hello”
或者是:
- var (
- a int //0
- b string //“”
- c bool //false
- d int = 8 // 8
- e string = “hello” //hello
- )
常量
常量使⽤const 修饰,代表永远是只读的,不能修改。语法:const identifier [type] = value,其中type可以省略。
- 举例: const b string = “hello world”
- const b = “hello world”
- const Pi = 3.1414926
- const a = 9/3
更加优雅的写法:
- const(
- a = 1
- b = 2
- c = 3
- )
更加专业的写法:
- const (
- a = iota
- b
- c
- )
- const(
- a = 1 << iota
- b
- c
- )
数据类型
a. 布尔类型
- a. var b bool 和 var b bool = true 和 var b = false ,默认false
- b. 操作符 == 和 != 相等性判断
- c. 取反操作符:!b 数据类型和操作符
- d. && 和 || 操作符 与或
- e. 格式化输出占位符: %t fmt.Println("%t %t\n",a, b)
golang fmt包 Printf方法详解
- General
- %v 以默认的方式打印变量的值
- %T 打印变量的类型
-
- Integer
- %+d 带符号的整型,fmt.Printf("%+d", 255)输出+255
- %q 打印单引号
- %o 不带零的八进制
- %#o 带零的八进制
- %x 小写的十六进制
- %X 大写的十六进制
- %#x 带0x的十六进制
- %U 打印Unicode字符
- %#U 打印带字符的Unicode
- %b 打印整型的二进制
-
- Float
- %f (=%.6f) 6位小数点
- %e (=%.6e) 6位小数点(科学计数法)
- %g 用最少的数字来表示
- %.3g 最多3位数字来表示
- %.3f 最多3位小数来表示
-
- String
- %s 正常输出字符串
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。