golang--学习day01

文章介绍了如何在不同平台上下载并安装Golang,强调了配置环境变量的重要性。接着,讨论了Golang中的标识符规则,包括命名标准和示例。然后,详细阐述了变量的声明、初始化、类型推导以及类型转换,同时也提到了匿名变量的概念。最后,简要列出了Golang的数据类型体系。

一:安装环境
1.下载地址:https://golang.google.cn/dl/,这里提供了不同平台的go版本,根据自己的平台选择下载。
2.安装完成后,把C:\go\bin目录添加到环境变量,这里就可以使用go了,在命令行输入 go version查看版本,输出结果如下所示。
3.强制开启GO111MODULE

go env -w GO111MODULE=on

使用中国代理

go env -w GOPROXY=https://goproxy.cn,direct

GO常用命令
使用示例

go build main.go
...

build: 编译包和依赖
clean: 移除对象文件
doc: 显示包或者符号的文档
env: 打印go的环境信息
bug: 启动错误报告
fix: 运行go tool fix
fmt: 运行gofmt进行格式化
get 下载并安装依赖包

golang标识符、关键字、命名规则
标识符
标识符的英文是 identifier ,通俗的讲,就是给变量、常量、函数、方法、结构体、数组、切片、接口起名字。
标识符的组成
1.标识符由数字、字母和下划线(_)组成。123 abc
2.只能以字母和下划线(-)开头。abc123_sysVar 123abc
3.标识符区分大小写。name Name NAME
举例说明标识符的命名
正确的命名

package main
import "fmt"
func main() (
var name string
var age int
var _sys int

golang变量
变量是计算机语言中能储存计算结果或能表示值的抽象概念不同的变量保存的数据类型可能会不一样。
声明变量
Go语言中的变量需要声明后才能使用,同一作用域内不支持重复声明。 并且Go语言的变量声明后必须使用。声明变量的语法
var identifier type
var:声明变量关键字
identifier:变量名称
type :变量类型
例如

package main
import "fmt"
func main() {
	var name string
	var age int
	var ok bool
}

批量声明
使用一个 var 关键字,把一些变量写在一个括号()里

package main
func main() {
	var (
		name string
		age int
		ok bool
	)
}

变量的初始化
Go语言在声明变量的时候,会自动对变量对应的内存区域进行初始化操作。每个变量会被初始化成其类型的默认值,例如:整型和浮点型变量的默认值为0。字符串变量的默认值为空字符串“"。布尔型变量默认为 false。切片、函数、指针变量的默认为 nil。

变量初始化语法

var 变量名 类型 = 表达式

例如

package main
func main() {
	var name string =“老郭"
	var site string ="www.baidu.com"
	var age int = 30
}

类型推导
我们在声明变量时,可以根据初始化值进行类型推导,从而省略类型。

package main
func main() {
	var name =“老郭”
	var site = "www.baidu.com"
	var age = 30
}

初始化多个变量
可以一次初始化多个变量,中间用逗号分隔

package main
func main() {
	var name,site,age ="老郭""www.baidu.com"381
}

短变量声明
只能在函数内部,可以使用 := 运算符对变量进行声明和初始化。

package main
func main() {
	name :=“老郭"
	site := “www.baidu.com"
	age := 20
}

匿名变量
如果我们接收到多个变量,有一些变量使用不到,可以使用下划线_表示变量名称,这种变量叫做匿名变量。例如:

package main
import "fmt"
func getNameAndAge() (stringint)return"老郭"30func main{
	name,_ := getNameAndAge()//_就是一个匿名变量 无实际运用价值也不占用内存
	fmt.Printf("name: v\n”,name)
	fmt.Printf("age: v\n",age)//无法输出

变量类型转换
变量类型转换必须是底层相同的结构类型的变量可以转换
例如 浮点转整形可以 但是 字符串转整形就不可以

package main
import "fmt"

func main() {
	var a = 1;
	var b = 2.2
	//开始转换
	a = int(b);
	fmt.printl(a)//输出2
}

GO数据类型

  • 基础类型:整数、浮点数、复数、布尔值、字符串、常量
  • 聚合类型:数组、结构体struct
  • 引用类型:指针、切片slice、映射map、函数、通道
  • 接口类型:接口
<think>嗯,用户想要一个从零开始的Golang语言教程。首先,我需要确定用户的基础水平,可能是一个完全没有编程经验的新手,或者有其他语言经验但想学Go的人。不管怎样,教程需要从基础开始,逐步深入。 首先,应该介绍Go的背景,比如由Google开发,强调简洁、高效和并发处理。然后,安装和环境搭建是必须的,用户需要知道如何设置Go的工作环境,包括GOPATH和GOROOT这些概念,可能还需要指导如何安装VS Code或其他编辑器。 接下来,基本语法结构。第一个程序通常是“Hello, World!”,这能帮助用户快速上手。然后介绍变量声明、数据类型、控制结构如if-else、for循环,可能还要提到Go没有while循环,而是用for实现。函数定义也是基础部分,包括多返回值的特性。 然后,进阶部分应该包括指针、结构体、方法、接口,这些是Go面向对象的核心概念。还有数组、切片、映射这些数据结构,以及错误处理机制,比如error类型和panic/recover。 并发是Go的亮点,需要详细讲解goroutine和channel,通过例子展示如何实现并发通信。包管理和模块部分,现在Go Modules已经是标准,需要解释go mod的使用,以及如何导入第三方包。 工具链部分,介绍go build、go run、go test等命令,还有测试和性能分析工具如pprof。最后,实战项目建议,比如CLI工具、Web服务,或者并发应用,帮助用户巩固知识。 用户可能还关心学习资源,比如官方文档、在线教程、书籍推荐,以及社区支持。需要确保内容结构清晰,步骤明确,避免信息过载。同时,注意示例代码的正确性和简洁性,让用户容易理解和练习。可能还需要提醒常见的陷阱和最佳实践,帮助用户避免错误。</think>以下是一份从零开始的 Go 语言Golang)基础教程大纲,适合编程新手或转语言学习者: --- ### **一、Go 语言简介** - **特点**:简洁、高效、并发支持、编译型语言 - **应用场景**:后端服务、云原生(Docker/K8s)、微服务、CLI工具 - **优势**:快速编译、垃圾回收、原生并发模型(goroutine) --- ### **二、环境搭建** 1. **安装** - 官网下载:[https://golang.org](https://go.dev/) - 验证安装:终端输入 `go version` 2. **配置环境变量** - `GOPATH`(工作目录) - `GOROOT`(Go安装路径) 3. **编辑器推荐** - VS Code(安装 Go 插件) - Goland(JetBrains 专业 IDE) --- ### **三、基础语法** #### 1. 第一个程序 ```go package main import "fmt" func main() { fmt.Println("Hello, World!") } ``` - `go run hello.go` 直接运行 #### 2. 变量与数据类型 ```go var name string = "Alice" // 显式声明 age := 25 // 类型推断(短声明) const PI = 3.14 // 常量 // 基础类型:int, float64, bool, string // 复合类型:array, slice, map, struct ``` #### 3. 控制结构 ```go // if-else if x > 10 { fmt.Println("Large") } else { fmt.Println("Small") } // for 循环(无 while) for i := 0; i < 5; i++ { ... } // switch switch day { case "Mon": fmt.Println("周一") default: fmt.Println("其他") } ``` #### 4. 函数 ```go func add(a int, b int) int { return a + b } // 多返回值 func swap(x, y string) (string, string) { return y, x } ``` --- ### **四、进阶特性** #### 1. 指针与结构体 ```go type Person struct { Name string Age int } p := Person{Name: "Bob"} p.Age = 30 ``` #### 2. 接口与错误处理 ```go type Shape interface { Area() float64 } // 错误处理 result, err := someFunction() if err != nil { log.Fatal(err) } ``` #### 3. 并发编程 ```go // goroutine(轻量级线程) go func() { fmt.Println("Running in goroutine") }() // channel 通信 ch := make(chan string) go func() { ch <- "message" }() msg := <-ch ``` --- ### **五、包管理与工具链** - **Go Modules**(依赖管理) ```bash go mod init project-name go get github.com/package-name ``` - **常用命令** - `go build`:编译 - `go test`:运行测试 - `go fmt`:格式化代码 --- ### **六、学习资源推荐** 1. **官方文档**:[https://go.dev/doc/](https://go.dev/doc/) 2. **在线教程**: - [Tour of Go](https://go.dev/tour/)(交互式学习- 《Go 语言圣经》(中文版) 3. **书籍**: - 《Go 程序设计语言- 《Go Web 编程》 --- ### **七、实战项目建议** 1. 编写命令行工具(如文件管理器) 2. 构建 RESTful API(使用 Gin 或 Echo 框架) 3. 实现并发网络爬虫 通过以上步骤,你可以逐步掌握 Go 语言的核心特性。建议边学边写代码,注重理解并发模型和接口设计!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值