没有合适的资源?快使用搜索试试~ 我知道了~
十分钟掌握Go语言基本用法
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 101 浏览量
2023-06-28
15:03:22
上传
评论
收藏 191KB PDF 举报
温馨提示
试读
17页
最精简的Go语言入门教程,十分钟掌握Go基本用法
资源推荐
资源详情
资源评论
Go(又称Golang)是Google开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能
的编程语言。 —— Go - wikipedia.org
1 Go 安装
最新版本下载地址 ,当前是 1.13.6。如无法访问,可以在 官方下载 golang.org studygolang.
下载com/dl
使用 Linux,可以用如下方式快速安装。
1
2
3
4
5
6
$ wget https://studygolang.com/dl/golang/go1.13.6.linux-amd64.tar.gz
$ tar -zxvf go1.13.6.linux-amd64.tar.gz
$ sudo mv go /usr/local/
$ go version
go version go1.13.6 linux/amd64
从 版本开始,Go 提供了 的机制,推荐设置以下环境变量,第三方包的下Go 1.11 Go Modules
载将通过国内镜像,避免出现官方网址被屏蔽的问题。
1 $ go env -w GOPROXY=https://goproxy.cn,direct
或在 中设置环境变量~/.profile
1 export GOPROXY=https://goproxy.cn
2 Hello World
新建一个文件 ,写入main.go
1
2
3
4
5
6
7
package main
import "fmt"
func main() {
fmt.Println("Hello World!")
}
执行 或 ,将会输出go run main.go go run .
1
2
$ go run .
Hello World!
如果强制启用了 Go Modules 机制,即环境变量中设置了 GO111MODULE=on,则需要先初始化
模块 go mod init hello
否则会报错误:go: cannot find main module; see ‘go help modules’
我们的第一个 Go 程序就完成了,接下来我们逐行来解读这个程序:
package main:声明了 main.go 所在的包,Go 语言中使用包来组织代码。一般一个文件夹
即一个包,包内可以暴露类型或方法供其他包使用。
import “fmt”:fmt 是 Go 语言的一个标准库/包,用来处理标准输入输出。
func main:main 函数是整个程序的入口,main 函数所在的包名也必须为 。main
fmt.Println(“Hello World!”):调用 fmt 包的 Println 方法,打印出 “Hello
World!”
go run main.go,其实是 2 步:
go build main.go:编译成二进制可执行程序
./main:执行该程序
3 变量与内置数据类型
3.1 变量(Variable)
Go 语言是静态类型的,变量声明时必须明确变量的类型。Go 语言与其他语言显著不同的一个地
方在于,Go 语言的类型在变量后面。比如 java 中,声明一个整体一般写成 ,在 Go int a = 1
语言中,需要这么写:
1
2
3
var a int // 0
var a int = 1 //
var a = 1 //
var a = 1,因为 1 是 int 类型的,所以赋值时,a 自动被确定为 int 类型,所以类型名可以
省略不写,这种方式还有一种更简单的表达:
1
2
a := 1
msg := "Hello World!"
3.2 简单类型
空值:nil
整型类型: int(取决于操作系统), int8, int16, int32, int64, uint8, uint16, …
浮点数类型:float32, float64
字节类型:byte (等价于uint8)
字符串类型:string
布尔值类型:boolean,(true 或 false)
1
2
3
4
5
var a int8 = 10
var c1 byte = 'a'
var b float32 = 12.2
var msg = "Hello World"
ok := false
3.3 字符串
在 Go 语言中,字符串使用 UTF8 编码,UTF8 的好处在于,如果基本是英文,每个字符占 1
byte,和 ASCII 编码是一样的,非常节省空间,如果是中文,一般占3字节。包含中文的字符串
的处理方式与纯 ASCII 码构成的字符串有点区别。
我们看下面的例子:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
package main
import (
"fmt"
"reflect"
)
func main() {
str1 := "Golang"
str2 := "Go"
fmt.Println(reflect.TypeOf(str2[2]).Kind()) // uint8
fmt.Println(str1[2], string(str1[2])) // 108 l
fmt.Printf("%d %c\n", str2[2], str2[2]) // 232 è
fmt.Println("len(str2)", len(str2)) // len(str2) 8
}
reflect.TypeOf().Kind() 可以知道某个变量的类型,我们可以看到,字符串是以 byte 数
组形式保存的,类型是 uint8,占1个 byte,打印时需要用 string 进行类型转换,否则打
印的是编码值。
因为字符串是以 byte 数组的形式存储的,所以, 的值并不等于。str2 的长度 str2[2]
也不是 4,而是 8( Go 占 2 byte,语言占 6 byte)。len(str2)
正确的处理方式是将 string 转为 rune 数组
1
2
3
4
5
str2 := "Go"
runeArr := []rune(str2)
fmt.Println(reflect.TypeOf(runeArr[2]).Kind()) // int32
fmt.Println(runeArr[2], string(runeArr[2])) // 35821
fmt.Println("len(runeArr)", len(runeArr)) // len(runeArr) 4
转换成 类型后,字符串中的每个字符,无论占多少个字节都用 int32 来表示,因而可以[]rune
正确处理中文。
剩余16页未读,继续阅读
资源评论
北极象
- 粉丝: 1w+
- 资源: 345
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 三层独栋别墅图纸编号D066-三层-12.00&12.00米- 施工图.dwg
- 农村小别墅图纸编号D065-三层-14.40&18.55米-施工图.dwg
- 基于YOLOv8检测高铁吊弦缺陷实现的系统的Python源码+文档说明+训练源文件+模型.zip
- 三层农村小别墅图纸编号D064-三层-13.80&22.20米-施工图.dwg
- 三层别墅图纸编号D063-三层-13.57&17.40米- 施工图.dwg
- STC IAP15F2K61S2单片机i2c 接口PCF8591-ADC实验+DAC实验 KEIL例程源码+开发板硬件原理图
- Jlink-windows-v7967
- ADC直流分量影响分析
- 二层半独栋别墅结构水电施工图结构专家电.dwg
- 二层半独栋别墅结构水电施工图结构水暖图.dwg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功