https://studygolang.com/dl
我的电脑 - 属性 - 高级系统设置 - 环境变量
新建 - 系统变量
GOROOT 安装目录
GOPATH 自己新建go的工作目录
修改-用户变量
GOPATH
GOPATH 目录下需要有三个文件夹
D:/GoWorks
----- bin
----- pkg
----- src
go version
go env
package main
import "fmt"
func main(){
fmt.PrintIn("hello world")
}
go run hello.go
go env -w GO111MODULE=off
注意:在 GO 语言里,命名为 main 的包具有特殊的含义。Go 语言的编译程序会试图把这种名字的报编译为二进制可执行文件。所有Go语言编译的可执行程序都必须有一个名叫 main 的包。一个可执行程序有且仅有一个 main 包。
当编译器发现有一个 main 包时候,那么它一定会有一个 main 函数。
package main
import "fmt"
/*
这是一个main函数,
这格式 go 语言启动的入口
*/
func main() {
// 我是单行注释
fmt.PrintIn("hello world")
}
package main
import "fmt"
func main() {
// name 变量
var name string = "变量"
fmt.PrintIn(name)
}
在go语言中,我们声明一个变量一般使用 var
var name type
注意:go语言中变量定义必须使用,否则报错
package main
import "fmt"
func main() {
// 定义多个变量
var (
name string
age int
addr string
)
// string 的默认值:空
// int 默认值是:0
var age int = 18
var name string = "变量"
fmt.PrintIn(name,age)
}
package main
import "fmt"
func main() {
// 定义多个变量
var (
name string
age int
addr string
)
age = 18
name = "变量"
addr = 'fdff'
fmt.PrintIn(name,age)
}
:=
自动推导name := "hhh"
age := 18
// 查询变量类型 %T=type
fmt.Printf("%T,%T",name,age)
package main
import "fmt"
func main() {
var num int
num = 100
fmt.Printf("num:%d,内存地址:%p", num, &num)
}
package main
import "fmt"
func main() {
var (
a int
b int
)
a = 100
b = 200
b,a = a,b
fmt.Printfln(a, b)
}
匿名变量的特点是一个下划线 "_"," _"
本身就是一个特殊的标识符,被称为空白标识符,它可以像其他标识符那样用于变量声明或赋值(任何类型都可以赋值给它)但任何付给这个标识符的值都将被抛弃
,因此这些值不能在后续代码中使用,也不可以使用这个标识符作为变量对其它变量进行赋值或运算,使用匿名变量时,只需在变量声明的地方使用下划线替换即可。
package main
import "fmt"
func test() (int,int) {
return 100,200
}
func main() {
a, _:= test()
_, b:= test()
fmt.PrintIn(a, b) // 100,200
}
常量是一个简单的标识符,程序运行时,不会改变
常量中的数据类型只能时 布尔、数字型(整数、浮点和复数)和字符串
const identifier [type] = value
特俗常量,可以认为是一个可以被编译修改的常量,iota是go语言的常量计数器。
iota在const 关键字出现时将被重置为 0(const 内部的第一行之前)const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)
package main
import "fmt"
func main() {
const (
a = iota
b
c
d = "sjdjs"
e
f = 100
g = iota
)
fmt.Println(a, b, c, d, e, f, g) // 0 1 2 sjdjs sjdjs 100 6
}
package main
import "fmt"
func main() {
const (
n1, n2 = iota +1, iota +2
n3, n4
n5, n6
)
fmt.Println(n1,n2,n3,n4,n5,n6) // 1 2 2 3 3 4
}