Go语言入门自学(一)

GoLang

首先介绍下GO语言的起源

Go语言是一个开源的编程语言,它能让构造简单,可靠且高效的软件变得容易。
GO是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发。2009年11月开源,在2012年早些时候发布了GO 1稳定版本。现在GO的开发已经是完全开放的,并且拥有一个活跃的社区。

Go语言最主要的特性

  • 自动垃圾回收
  • 更丰富的内置类型
  • 函数多返回值
  • 错误处理
  • 匿名函数和闭包
  • 类型和接口
  • 并发编程
  • 反射
  • 语言交互性

Go语言结构

在学习之前先来了解下Go语言最简单程序结构。
Go语言的基础组成有一下几个部分

  • 包声明
  • 引入包
  • 函数
  • 变量
  • 语句&表达式
  • 注释
package main
import "fmt"
func main(){
    fmt.Println("My,first Go applition")
}

让我们来看下以上程序的各个部分

  • package main定义了包名,你必须在源文件中非注释的第一行指明这个文件属于哪个包,每个Go应用程序都包含一个名为main的包。
  • import "fmt"是告诉Go编辑器这个程序需要使用fmt包(的函数,或其他元素),fmt包实现了格式化IO(输入/输出)的函数。
  • func main()是程序开始执行的函数。main函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数(如果有init()函数则会先执行该函数)
  • /*...*/是Go语言的注释标识。
  • fmt.Println(...)可以将字符串输出到控制台,并在最后自动增加换行字符 \n,使用 fmt.Print("My,first Go applition\n") 可以得到相同的结果。
  • 当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的 public);标识符如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的 protected )。

Go语言基础语法

Go标记

Go 程序可以由多个标记组成,可以是关键字,标识符,常量,字符串,符号。如以下 GO 语句由 6 个标记组成:

fmt.Println("Hello, World!")
1. fmt
2. .
3. Println
4. (
5. "Hello, World!"
6. )

行分隔符

在 Go 程序中,一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号 ; 结尾,因为这些工作都将由 Go 编译器自动完成。
如果你打算将多个语句写在同一行,它们则必须使用 ; 人为区分,但在实际开发中我们并不鼓励这种做法。

标识符

标识符用来命名变量、类型等程序实体。一个标识符实际上就是一个或是多个字母(AZ和az)数字(0~9)、下划线_组成的序列,但是第一个字符必须是字母或下划线而不能是数字。

//有效的标识符
mahesh   kumar   abc   move_name   a_123
myname50   _temp   j   a23b9   retVal
//无效的标识符
123asd //(以数字开头)
case   //(Go 语言的关键字)
a+b    //(运算符是不允许的)

关键字

下面列举了 Go 代码中会使用到的 25 个关键字或保留字

break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var

除了以上介绍的这些关键字,Go 语言还有 36 个预定义标识符

append bool byte cap close complex complex64 complex128 uint16
copy false float32 float64 imag int int8 int16 uint32
int32 int64 iota len make new nil panic uint64
print println real recover string true uint uint8 uintptr

程序一般由关键字、常量、变量、运算符、类型和函数组成。
程序中可能会使用到这些分隔符:括号 (),中括号 [] 和大括号 {}。
程序中可能会使用到这些标点符号:.、,、;、: 和 …

Go 语言的空格

Go 语言中变量的声明必须使用空格隔开

var age int;

Go语言结构小结

导入多包时

import "fmt"
import "io"
//也可以
import {
    "fmt",
    "io"
}

Go 程序的一般结构: basic_structure.go

//当前程序包名
package main
//导入其他包
import "fmt"
//常量定义
const PI = 3.14
//全局变量声明
var name = "duxian"
//一般类型声明
type newType int
//结构的声明
type gopher struct()
//接口的声明
type golang interface()
//由main函数作为程序入口点启动
func main(){
    Println(name)
}

GO语言的数据类型

在Go编程语言中,数据类型用于声明函数和变量。
数据类型的出现是为了把数据分成所需内存大小不同的数据,编程的时候需要用大数据的时候才需要申请大内存,就可以充分利用内存。

Go语言按类别有以下几种数据类型

  • 布尔型
    布尔型的值只可以是常量 true 或者 false。一个简单的例子:var b bool = true。
  • 数字类型
    整型 int 和浮点型 float32、float64,Go 语言支持整型和浮点型数字,并且原生支持复数,其中位的运算采用补码。
  • 字符窜类型
    Go语言的字符串的字节使用UTF-8编码标识Unicode文本
  • 派生类型
  • 指针类型
  • 数组类型
  • 结构化类型
  • Channel类型
  • 函数类型
  • 切片类型
  • 接口类型
  • Map类型

数字类型

整数型

  • uint8
    无符号 8 位整型 (0 到 255)
  • uint16
    无符号 16 位整型 (0 到 65535)
  • uint32
    无符号 32 位整形 (0 到 4294967295)
  • uint64
    无符号 64 位整型 (0 到 18446744073709551615)
  • int8
    有符号 8 位整型 (-128 到 127)
  • int16
    有符号 16 位整型 (-32768 到 32767)
  • int32
    有符号 32 位整型 (-2147483648 到 2147483647)
  • int64
    有符号 64 位整型 (-9223372036854775808 到 9223372036854775807)

浮点型

  • float32
    IEEE-754 32位浮点型数
  • float64
    IEEE-754 64位浮点型数
  • complex64
    32 位实数和虚数
  • complex128
    64 位实数和虚数

其他数字类型

  • byte
    类似 uint8
  • rune
    类似 int32
  • uint
    32 或 64 位
  • int
    与 uint 一样大小
  • uintptr
    无符号整型,用于存放一个指针

Go语言变量

变量来源于数学,是计算机语言中能存储计算结果或能表示值抽象概念。变量可以通过变量名访问。
Go 语言变量名用字母,数字,下划线组成。其中首字母不能使数字。
声明变量的一般形式是使用var关键字

var identifier type

变量声明

//第一种,指定变量类型,声明后若不赋值,使用默认值。
var v_name v_type
v_name = value
//第二种,根据值自行判定变量类型。
var v_name = value
//第三种,省略var, 注意 :=左侧的变量不应该是已经声明过的,否则会导致编译错误。
v_name := value
//// 例如
var a int = 10
var b = 10
c := 10

多变量声明

//类型相同多个变量, 非全局变量
var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3

var vname1, vname2, vname3 = v1, v2, v3 //和python很像,不需要显示声明类型,自动推断

vname1, vname2, vname3 := v1, v2, v3 //出现在:=左侧的变量不应该是已经被声明过的,否则会导致编译错误

// 这种因式分解关键字的写法一般用于声明全局变量
var (
    vname1 v_type1
    vname2 v_type2
)

值类型和引用类型

所有像 int、float、bool 和 string 这些基本类型都属于值类型

简短形式,使用 := 赋值操作符

全局变量是允许声明但不使用,但是函数内变量声明后必须使用否则会得到错误 “变量 declared and not used”

自学来源

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,468评论 5 473
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,620评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,427评论 0 334
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,160评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,197评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,334评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,775评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,444评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,628评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,459评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,508评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,210评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,767评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,850评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,076评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,627评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,196评论 2 341

推荐阅读更多精彩内容

  • 官方网站:https://golang.org/标准库文档:https://golang.org/pkg/在线编码...
    技术学习阅读 2,323评论 2 39
  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,131评论 9 118
  • •1 C语言程序的结构认识 用一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使读者对c语...
    CONLYOUC阅读 8,694评论 9 66
  • 在去往学校的汽车上,心情并不是多么美好。阴雨绵绵的天气,不是靠窗的座位,无聊的刷着手机,看着纷纷嚷嚷的世间...
    冷澈12阅读 476评论 0 0
  • 179站请大家关注6码---4码 单挑参考 参考就是 【杀1-2码 0=0】 组合2配46拖79 单挑 组选9码 ...
    179幸运彩吧阅读 190评论 0 0