最全&最简洁的Go语言入门整理资料 (1)!!持续更新

本文介绍了Go语言的设计优势,特别是在多核并发处理上的原生支持。讲解了Go开发环境的配置,包括GOPATH、GOROOT以及gomodule的使用。详细阐述了如何在国内环境下配置Go module,以及常用命令。此外,还介绍了Go语言的基本语法,如变量、常量、基本数据类型的声明和使用。最后,提到了Go语言在项目管理和开发环境配置中的实践应用。
摘要由CSDN通过智能技术生成
一. 为什么需要引入Go语言?

Go语言——让你用写Python代码的开发效率编写C语言代码。
Go于2009年发布,当时多核处理器已经上市。Go语言在多核并发上拥有原生的设计优势,Go语言从底层原生支持并发,无须第三方库、开发者的编程技巧和开发经验。

二. 开发环境的配置:

自行百度,重点是GOPATH和GOROOT和环境变量的配置。

go module
go module是Go1.11版本之后官方推出的版本管理工具,并且从Go1.13版本开始,go module将是Go语言默认的依赖管理工具。
启用go module支持首先要设置环境变量GO111MODULE,通过它可以开启或关闭模块支持,它有三个可选值:off、on、auto,默认值是auto。
1. GO111MODULE = off 禁用模块支持,编译时会从GOPATH和vendor文件夹中查找包。
2. GO111MODULE = on 启用模块支持,编译时会忽略GOPATH和vendor文件夹,只根据 go.mod下载依赖。
3. GO111MODULE = auto,当项目在$GOPATH/src外且项目根目录有go.mod文件时,开启模块支持。
**例如:**在vscode中安装go插件后,会提示下载常用工具,经常会出错这个时候要使用代理来解决–>https://goproxy.io 这个网站有对应的镜像,按照网站说明做就可以了;
在我的电脑中配置的环境变量如下:
在这里插入图片描述

常用的go mod命令如下:

go mod download //下载依赖的module到本地cache(默认为$GOPATH/pkg/mod目录)
go mod edit //编辑go.mod文件
go mod graph //打印模块依赖图
go mod init //初始化当前文件夹, 创建go.mod文件
go mod tidy //增加缺少的module,删除无用的module
go mod vendor //将依赖复制到vendor下
go mod verify //校验依赖
go mod why //解释为什么需要依赖​

: go.mod 文件记录了项目所有的依赖信息,使用go mod 管理项目,就不需要非得把项目放到GOPATH指定目录下,你可以在你磁盘的任何位置新建一个项目。包含go.mod文件的目录也被称为模块根,也就是说,go.mod 文件的出现定义了它所在的目录为一个模块。
: 在国内访问golang.org/x的各个包都需要翻墙,你可以在go.mod中使用replace替换成github上对应的库。或者使用go get命令直接下载相关工具和依赖包。

go get命令如下:

go get -u //将会升级到最新的次要版本或者修订版本(x.y.z, z是修订版本号, y是次要版本号)
go get -u=patch //将会升级到最新的修订版本
go get package@version //将会升级到指定的版本号version  
  • 在项目中使用go module进行管理:
    1)既有项目:

    1. 在项目目录下执行go mod init,生成一个go.mod文件。
    2. 执行go get,查找并记录当前项目的依赖,同时生成一个go.sum记录每个依赖库的版本和哈希值。

    2)新项目:

    1. 执行go mod init 项目名命令,在当前项目文件夹下创建一个go.mod文件。
    2. 手动编辑go.mod中的require依赖项或执行go get自动发现、维护依赖。
三. Go语言基础
0.变量和常量:
/*变量*/
//标准声明变量:
var 变量名 变量类型​
如:var name string
    var age int
    var isOk bool
    
//批量声明变量:
var (
    a string
    b int
    c bool
    d float32
)

//变量的初始化:
var 变量名 类型 = 表达式//有时候直接将变量类型省略,如:var name  = "Q1mi"
var name string = "Q1mi"
var age int = 18
或者一次初始多个变量:
var name, age = "Q1mi", 20
    
//短变量声明:(在函数内部)
直接使用:= 方式声明并初始化变量。如:
    n := 10
    
//匿名变量:
使用多重赋值时,如果想要忽略某个值,可以使用匿名变量,用下划线 _ 表示,如:
    func foo() (int, string) {
	return 10, "Q1mi"
    }
    x, _ := foo() //匿名变量不占用命名空间,不会分配内存
    _, y := foo() ​ 
/*常量*/
const pi = 3.1415
const e = 2.7182
或者:
const (
    pi = 3.1415
    e = 2.7182
)

//into时go语言的常量计数器,只在常量的表达式中使用;
const (
		n1 = iota //0 iota可理解为const语句块中的行索引
		n2        //1
		n3        //2
		n4        //3
	) 
1. 基本数据类型
整形:uint8 uint16 uint32 uint64 int8 ……
特殊的整形:uint/int 3264位OS上分别是32位和64位 

浮点型:float32float64 
复数:complex64complex128 
布尔值:bool 只有truefalse两个值

字符串:直接用“”,s1 := "hello"
定义多行字符串时:s1 := `第一行
第二行
第三行
` //反引号进行引用
字符串常用操作:
len(str)	求长度
+或fmt.Sprintf	拼接字符串
strings.Split	分割
strings.contains	判断是否包含
strings.HasPrefix,strings.HasSuffix	前缀/后缀判断
strings.Index(),strings.LastIndex()	子串出现的位置
strings.Join(a[]string, sep string)	join操作

byterune类型:
    1uint8类型,或者叫 byte 型,代表了ASCII码的一个字符。
    2rune类型,代表一个 UTF-8字符。即中文字符
    s1 := "big"
    byteS1 := []byte(s1) //Go语言中只有强制类型转换,且只有转换成rune/byte类型时才可以修改字符串。
    s2 := "白萝卜"
    runeS2 := []rune(s2) 

以后还会更新Go语言的基础知识(运算符、流程控制、数组切片map等类型、函数、闭包、指针、结构体等)及更高阶的知识!!!
之后将继续更新本人Go语言的学习之路,这是我在学习过程中的笔记,也希望各位能提出自己珍贵的建议,请大家继续关注啦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郝同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值