Go 语言入门

简介: Go 语言入门Go 语言简介Go 使一个开源的编程语言。从2007年末 有Robert Griesemer,Rob Pike , Ken Thompson 主持开发。

Go 语言入门

Go 语言简介

  • Go 使一个开源的编程语言。
  • 从2007年末 有Robert Griesemer,Rob Pike , Ken Thompson 主持开发。
  • 最终2009年11月开源。
  • 2012年早些时候发布了Go1 稳定版本
  • 目前Go的开发已经是完全开放的,并且拥有一个活跃的社区。

Go 语言特色

  • 简单、快速、安全
  • 并行、有趣、开源
  • 内存管理、v数组安全、编译迅速

第一个Go程序《Hello world》

// test
package main

import (
    "fmt"
)

func main() {
    fmt.Println("Hello World!")
}

这个代码,是有LiteIDE 自动生成的。
运行结果如下:

// test
package main

import (
    "fmt"
)

func main() {
    fmt.Println("Hello World!")
}

根据Go Hello World 实力,分析一下GO语言结构

Go语言的基础组成有以下几个部分:

  • 包声明
  • 引入包
  • 函数
  • 变量
  • 语句 & 表达式
  • 注释
    接下来让我们来看下简单的代码,该代码输出了"Hello World!"
// test
package main

import (
    "fmt"
)

func main() {
    fmt.Println("Hello World!")
}

详细分析一下:
1、第一行代码 package main 定了包名, 必须在源文件中非注释的第一行指明这个文件属于哪个包,比如:package main 表示一个可独立执行的程序,每一个Go应用程序,都包含一个 main 的包。
2、下一行的 import "fmt" 高速Go编辑器这个程序要用到fmt 包,fmt包实现了格式化IO的函数。
3、下一行 func main() 是程序开始执行的函数,main函数是每一个可执行程序必须包含的,一般来说,都是在启动第一个执行的函数(如果有init()函数,会更先执行)。
4、fmt.Println(...) 输出字符串到控制台,并在最后自动增加换行符\n
5、注解 /*.... */。不解释。

使用命令窗,执行Go程序

刚刚的文件保存为 test.go
然后打开命令窗口,运行 go run test.go 回车即可。

Go语言基础语法

** Go 标记 **
Go程序可以有多个标记组成,可以使关键字、标识符、常量、字符串、符号。如下Go语句的6个标记组成。

fmt.Println("Hello,World!")

6个标记是:

1、fmt
2、.
3、Println
4、(
5、"Hello,World!"
6、)
行分隔符

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

注释

注释不会被编译。

// 我是单行注释
/*
 我是多行注释
*/
标识符

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

以下是无效的标识符:

  • 1ab(以数字开头)
  • case(Go 语言的关键字)
  • a+b(运算符是不允许的)
Go 语言数据类型
序号 类型 描述
1 布尔型 布尔型的值只可以是常量true或则false.例如:var b = true var b bool = true
2 数字类型 整形int和浮点型float , Go语言支持整型和浮点数字,并且原生支持复数,其中位的运输采用补码
3 字符串类型 字符串就是一串固定长度的字符链接起来的字符序列。Go的字符串是由单个字节链接起来的。Go语言的字符串的字节使用UTF-8编码表示Unicode文本。
派生类
序号 类型
4 指针型(Pointer)
5 数组类型
6 结构化类型(struct)
7 Channel类型
8 函数类型
9 切片类型
10 接口类型(interface)
11 Map类型
数字类型

Go也有基于架构的类型,例如:int、uint和uintptr

序号 类型 描述
1 uint8 无符号8位整型(0~255)
2 uint16 无符号16位整形(0~65535)
3 uint32 无符号 32 位整型 (0~4294967295)
4 uint64 无符号 64 位整型 (0~18446744073709551615)
5 int8 有符号 8 位整型 (-128~127)
6 int16 有符号 16 位整型 (-32768~32767)
7 int32 有符号 32 位整型 (-2147483648~2147483647)
8 int64 有符号 64 位整型 (-9223372036854775808~9223372036854775807)
浮点型
序号 类型 描述
1 float32 IEEE-754 32位浮点型数
2 float64 IEEE-754 64位浮点型数
3 complex64 32 位实数和虚数
4 complex128 64 位实数和虚数
其他数字类型
序号 类型 描述
1 byte 类似uint8
2 rune 类似int32
3 uint 32或64位
4 int 与uint一样大小
5 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

实例如下:

package main
var a = "测试字符串"
var b string = "aweiblog.top"
var c bool //默认false

func main(){
    println(a,b,c)
}

多变量声明
//类型相同多个变量,非全局变量
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
)

实实例如下:

package main

var x,y int
var(
    a int
    b bool
)

var c,d int = 1,2
var e,f = 123, "hello"


//这种不带声明格式的职能在函数体中出现
//g,h := 123, "hello"

func main(){
    g,h:=123, "hello"
    println(x,y,a,b,c,d,e,f,g,h)
}

目录
相关文章
|
10天前
|
监控 算法 Go
Golang深入浅出之-Go语言中的服务熔断、降级与限流策略
【5月更文挑战第4天】本文探讨了分布式系统中保障稳定性的重要策略:服务熔断、降级和限流。服务熔断通过快速失败和暂停故障服务调用来保护系统;服务降级在压力大时提供有限功能以保持整体可用性;限流控制访问频率,防止过载。文中列举了常见问题、解决方案,并提供了Go语言实现示例。合理应用这些策略能增强系统韧性和可用性。
40 0
|
1天前
|
数据采集 人工智能 搜索推荐
快速入门:利用Go语言下载Amazon商品信息的步骤详解
本文探讨了使用Go语言和代理IP技术构建高效Amazon商品信息爬虫的方法。Go语言因其简洁语法、快速编译、并发支持和丰富标准库成为理想的爬虫开发语言。文章介绍了电商网站的发展趋势,如个性化推荐、移动端优化和跨境电商。步骤包括设置代理IP、编写爬虫代码和实现多线程采集。提供的Go代码示例展示了如何配置代理、发送请求及使用goroutine进行多线程采集。注意需根据实际情况调整代理服务和商品URL。
快速入门:利用Go语言下载Amazon商品信息的步骤详解
|
3天前
|
存储 编译器 Go
Go语言学习12-数据的使用
【5月更文挑战第5天】本篇 Huazie 向大家介绍 Go 语言数据的使用,包含赋值语句、常量与变量、可比性与有序性
38 6
Go语言学习12-数据的使用
|
4天前
|
Java Go
一文带你速通go语言指针
Go语言指针入门指南:简述指针用于提升效率,通过地址操作变量。文章作者sharkChili是Java/CSDN专家,维护Java Guide项目。文中介绍指针声明、取值,展示如何通过指针修改变量值及在函数中的应用。通过实例解析如何使用指针优化函数,以实现对原变量的直接修改。作者还邀请读者加入交流群深入探讨,并鼓励关注其公众号“写代码的SharkChili”。
11 0
|
4天前
|
存储 缓存 Java
来聊聊go语言的hashMap
本文介绍了Go语言中的`map`与Java的不同设计思想。作者`sharkChili`是一名Java和Go开发者,同时也是CSDN博客专家及JavaGuide项目的维护者。文章探讨了Go语言`map`的数据结构,包括`count`、`buckets指针`和`bmap`,解释了键值对的存储方式,如何利用内存对齐优化空间使用,并展示了`map`的初始化、插入键值对以及查找数据的源码过程。此外,作者还分享了如何通过汇编查看`map`操作,并鼓励读者深入研究Go的哈希冲突解决和源码。最后,作者提供了一个交流群,供读者讨论相关话题。
15 0
|
5天前
|
Java Go
Go语言学习11-数据初始化
【5月更文挑战第3天】本篇带大家通过内建函数 new 和 make 了解Go语言的数据初始化过程
18 1
Go语言学习11-数据初始化
|
5天前
|
自然语言处理 安全 Java
速通Go语言编译过程
Go语言编译过程详解:从词法分析(生成token)到句法分析(构建语法树),再到语义分析(类型检查、推断、匹配及函数内联)、生成中间码(SSA)和汇编码。最后,通过链接生成可执行文件。作者sharkchili,CSDN Java博客专家,分享技术细节,邀请读者加入交流群。
23 2
|
6天前
|
Java Linux Go
一文带你速通Go语言基础语法
本文是关于Go语言的入门介绍,作者因其简洁高效的特性对Go语言情有独钟。文章首先概述了Go语言的优势,包括快速上手、并发编程简单、设计简洁且功能强大,以及丰富的标准库。接着,文章通过示例展示了如何编写和运行Go代码,包括声明包、导入包和输出语句。此外,还介绍了Go的语法基础,如变量类型(数字、字符串、布尔和复数)、变量赋值、类型转换和默认值。文章还涉及条件分支(if和switch)和循环结构(for)。最后,简要提到了Go函数的定义和多返回值特性,以及一些常见的Go命令。作者计划在后续文章中进一步探讨Go语言的其他方面。
11 0
|
7天前
|
JavaScript 前端开发 Go
Go语言的入门学习
【4月更文挑战第7天】Go语言,通常称为Golang,是由Google设计并开发的一种编程语言,它于2009年公开发布。Go的设计团队主要包括Robert Griesemer、Rob Pike和Ken Thompson,这三位都是计算机科学和软件工程领域的杰出人物。
14 1
|
7天前
|
Go