go(一)
前四篇go基础笔记大部分cv–只因–的,主要本人是懒得写了,后面会继续更新go的基础及其框架,预计今年年底更完吧(感谢狂神_)
一、Go语言的发展史
Go语言特性
go语言也称为goland,是由Goggle公司开发的一种静态强类型,编译型,并发性,Go 语言语法与 C 相近,但功能上有:内存安全,GC(垃圾回收),结构形态及 CSP-style 并发计算。
二、Go语言环境安装
下载地址
国外网站太慢,我们使用中文网进行下载!
Go下载 - Go语言中文网 - Golang中文社区 (studygolang.com)
安装
无脑下一步就完了 ,注意下这里创建自己设置一个Go语言的环境目录!
查看版本
打开cmd 输入go version检测是否安装成功
配置环境变量
需要配置一个GOROOT和一个工作目录GOPATH(在里面建三个包bin,src,pkg)
GOROOT
GOPATH
这里需要在Goworks目录下存放三个包
文件源码都会在这三个文件下生成
确定一下path里是否有环境地址,如果没有的话在cmd输入go 以及go version就会找不到指令
输入go env检测环境是否设置成功
备:如果GOROOT路径没有设置成功,则将环境变量复制一份到用户变量里面就行
三、GOLand安装
接下来该干什么呢,当然是下载编码工具啊,不然用记事本敲吗?!
下载地址
Thank you for downloading GoLand! (jetbrains.com)
下载后双击打开,设置安装环境地址
勾选
然后就ok了
四、HelloWorld
使用记事本编写hello.go
package main
import "fmt" // 导入一个系统包fmt用来输出的
func main(){
fmt.Println("Hello,归空") // 打印输出helloworld字符串!
}
注意:文件路径要对
解释:在Go语言里,命名为main的包具有特殊的含义。Go语言的编译程序会试图把这种名字的包编译为二进制可执行文件。所有用Go语言编译的可执行程序都必须有一个名叫main的包,一个可执行程序 有且仅有一个 main包
当编译器发现某个包的名字为main时,它一定也会发现名为main()的函数,否则不会创建可执行文件。main()函数是程序的入口,所以,如果没有这个函数,程序就没有办法开始执行。程序编译时,会使用声明main包的代码所在的目录的目录名作为二进制可执行文件的文件名。
五、注释
给阅读代码的人看的,机器不会执行这行语句
单行注释
// 我是单行注释
多行注释
/*
我是多行注释
我是多行注释
我是多行注释
我是多行注释
*/
// 这是一个main函数,这个是go语言启动的入口
func main() {
//fmt.Println :打印一句话,然后执行完毕后,进行换行
fmt.Println("Hello,World")
}
六、什么是变量
所谓变量就是会变化的量,假如我添加一个变量叫做名字,那这个名字可以是任何人的名字。例:张三,李四
var name String = "只因"
我们定义的 name 变量 会指向内存中的某个地址,这个这个地址上的值就是变量的值,也就是
例:name指向0x18这个地址,根据这个地址找到一个名字叫归空
七、变量的定义
Go语言是静态类型语言,就是所有的类型我们都需要明确的去定义
我们声明一个变量一般是使用var关键字
var name type
以上为变量定义的固定写法
- var:声明变量的关键字
- name:变量名,怎么起名字看你自己
- type:代表变量的类型
//定义一个字符串变量 name
var name String
//定义一个数字类型变量 int
var age int
批量定义变量
var(
addr String
phone String
)
如果没有显式的给变量赋值,系统自动赋予它该类型的默认值
- 整形和浮点型变量的默认值为0和0.0
- 字符串变量的默认值为空字符串(啥都没有)
- 布尔型变量默认为false
- 切片、函数、指针变量的默认为nil
八、变量的初始化
var (
name string = "归空"
age int = 17
addr string = "中国"
)
fmt.Println(name, age, addr)
短变量声明并初始化
name2 := "归空"
age2 := 22
addr2 := "中国"
fmt.Printf("name:%s,age:%d,addr:%s", name2, age2, addr2)
fmt.Printf("%T,%T,%T", name2, age2, addr2)
这是Go语言的推导声明写法,编译器会自动根据右值的类型推断出左值的类型
因为简洁和灵活的特点,简短变量声明被广泛用于大部分的局部变量的声明和初始化
注意:
由于使用了 := ,而不是赋值的 = ,因此推导声明写法的左值必须是没有被定义过的,若定义过,将会发生编译错误
九、打印内存地址
var age int
age = 100
fmt.Printf("age:%d,内存地址:%p", age, &age)
age = 200
fmt.Printf("age:%d,内存地址:%p", age, &age)
我们修改 age的值 但是内存地址不会发生改变,因为只是修改了这个内存地址指向的值
十、变量交换
在这之前我们学习别的语言(例如java)交换两个变量的值,会比较麻烦
比如有 a=100 b=200
再添加一个中间变量temp
1、 temp = a
2、 a = b
3、 b = temp
//例如:java(什么public啥的就没敲了)
int a = 100;
int b = 200;
int temp;
temp = a;
a = b;
b = temp;
System.out.pringtln(a,b);
Go语言中只需要一行(比java爽多了哈哈哈哈哈哈)
var a int = 100
var b int = 200
b,a = a,b
fmt.Println(a, b)