如何快速学习新语言
- 理解语言本身运行部署
- 掌握基础语言与其他语言的不同之处
- 实战案例的运用
GO语言特点
- 自动立即回收
- 更丰富的内置类型:可自定义类型
- 函数多返回值:
- 错误类型:语法错误则无法执行
- 匿名函数和包
- 类型和接口
- 并发编程
- 反射
- 语言交互性
项目目录
- 项目代码保存路径:
$GOPATH/src
- 项目二进制执行文件路径:
$GOPATH/bin
- 项目缓存文件路径:
$GOPATH/pkg
提示:$GOPATH
为Go自定义安装目录路径
个人开发目录
团队开发目录
入口文件和模块引用包的区别
- 入口文件(main.go)统一引用
package main
- 模块文件(自定义模块)统一引用
package 模块名
提示: 一个项目有且只有一个入口文件(main.go)
Go的关键字
Go的保留字
GO语言的定义
定义变量
var 变量名 变量类型
package main
import "fmt"
var IP string //全局变量
func main() {
//定义变量方式一
var name string //定义变量:var 变量名 变量类型
name="jack_num1" //变量赋值
fmt.Println(name) //输出变量:字符串类型
//场景使用:全局变量(常用)、局部变量
//打印值:jack_num1
//定义变量方式二
person_name:="jack_num1" //定义变量:系统自动识别变量值判断变量类型
fmt.Println(person_name) //输出变量:字符串类型
//场景使用:一般用于局部变量
//打印值:jack_num1
//批量定义变量
var (
trueName string="jack_num1"
age int =28
height int = 180
)
fmt.Println(trueName,age,height) //批量打印值:jack_num1 26 180
//场景使用:多个变量存储或者修改
}
定义常量
const 常量名称 = 常量值
package main
import "fmt"
const num = 520 //全局变量
func main() {
//批量定义常量
const (
num1=521
num2=1314
)
fmt.Println(num1,num2) //打印值:521 1314
}
定义类型
type 类型名称 变量类型
package main
import "fmt"
//定义类型:自定义为int
type ic int
func main() {
var nums ic=11
fmt.Println(nums) //打印值
}
定义结构体
type 结构体名 struct
package main
import "fmt"
//定义结构体
type student struct {
name string
age int
}
func main() {
//创建结构体
stu:=student{
name:"jack_num1",
age:26,
}
fmt.Println(stu) //打印值:{jack_num1 26}
fmt.Println(stu.name) //打印值:jack_num1
}
定义函数
func 函数名(){}
func getUser() (int, string) {
return 1,"222"
}
定义方法
func 结构体 方法名()返回类型{}
package main
import "fmt"
//1、创建结构体
type student struct {
name string
age int
}
//2、创建结构体定义的方法
func (stu student) getStudentAge() int {
return stu.age
}
func main() {
//3、实例化结构体
stu:=student{
name:"jack_num1",
age:28,
}
fmt.Println(stu) //打印值
fmt.Println(stu.name) //打印值
//4、使用结构体的方法
fmt.Println(stu.getStudentAge()) //打印值:28
}
Go语言作用域
- 声明在函数内部,是函数的本地值,类似私有
private
- 声明在函数外部,是对 当前包 可见(包含所有.go文件都可见)的全局值,类似
protect
- 声明在 函数外部 且 首字母大写 是所有包可见的全局值,类似
public
GO包的概念
包是结构化代码的一种方式:每个程序都由包(pgk)的概念组成,可以使用自身的包或者从其他包中导入内容。
包的分类
包的使用
包的应用
fmt.Println(learnCourse.Sums('1',2,true))
//语法规范:包名.包函数(首字母大写)
GO的初始化函数
func init() {
fmt.Println("hello jack_num1")
}