step1:去https://go.dev下载golang
step2:下载jetbrains的Goland编译器(安装的过程会自动帮你配置好环境变量)
一个最简单的go程序
package main
import
(
"fmt"
)
func main()
{
fmt.Printf("Hello World")
}
1.定义变量: var 变量名 变量的数据类型
var a int
var b int=3
自动初始化:整型和浮点型变量的默认值为0,字符串变量的默认值为空字符串,布尔型变量默认为bool,切片、函数、指针变量的默认为nil
不指定变量类型的话,编译器会尝试根据等号右边的表达式推导出变量a的类型
var a = 100
批量定义变量:
var(
a int
b string
c []float
d func() bool
e struct
{
x int
}
)
实际常用的定义变量的方式:
test:="Hello World"
a:=1
变量值交换
var a int =100;
var b int =200;
b,a=a,b
基本类型:整型,浮点型,布尔型,字符串,数组
高级类型:切片,结构体,函数,map,通道
2.数组:(很少用数组,更多是用切片,因为数组的长度是固定的)
var a [3]int
a[0]=1
a[1]=2
a[2]=3
b:=[3]{1,2,3}
var c[2][3]
for i:=0;i<2;i++
{
for j:=0;j<3;j++
{
c[i][j]=i+j
}
}
var name [3]string
name[0]="xiaohong"
name[1]="xioazhang"
name[2]="xiaoming"
var name=[3]string{"xiaohong","xiaozhang","xiaoming"}
3. 切片:不同于python,go切片不支持负数索引
s:=make([]string 3)
s[0]="a"
s[1]="b"
s[2]="c"
s=append(s,"d");//向切片追加一个字符串,现在切片为[a,b,c,d]
s=append(s,"e","f");//向切片继续追加两个字符串,现在切片为[a,b,c,d,e,f]
fmt.Println(s[2:5])//[c,d,e] 所以是左闭右开[2,5)
fmt.Println(s[:5])//[a b c d e]
fmt.Println(s[2:])//[c d e f]
也可以在创建切片的时候对切片进行初始化
test:=[]String{"g","o","o',"d"}
fmt.Println(test)
最后介绍一下复制切片
c:=make([]string,len(s))
copy(c,s)
4.map,在其他语言中就是哈希表,最频繁的数据结构
m:=make(map[string]int)
m["one"]=1
m["two"]=2
fmt.Println(m) //map[one:1 two:2]
fmt.Println(m["one"]) //1
fmt.Println(m["unknow"]) //0
5.指针
func add1(n int)
{
n+=2
}
func add2(n *int)
{
*n+=2
}
func main()
{
n:=5
add1(n)
fmt.Println(n) //n还是5
add2(&n)
fmt.Println(n) //n变成7
}
6.结构体
type user struct
{
name string
password string
}
func main()
{
a:=user{name:"wang",password:"1024"}//创建并且初始化结构体
b:=user{"wang",1024}//另一种创建结构体的方法
//还可以这么创建
var c user
c.name="wang"
c.password="1024"
fm.Println(a,b,c) //{wang 1024} {wang 1024} {wang 1024}
}