var p *int
i:=2
p=&i
func main (){
i,j:=12,31
p:=&i//p是指向i的指针
fmt.Println(*p)
*p=21//通过指针改变i的值
p=&j//p指向j,因为在前面p已经声明过了,所以不用:=
*p=*p/2//通过指针对j进行除法运算
}
一个结构体就是一组字段
import "fmt"
type jiegou struct{
X int
Y int
}
func main (){
fmt.Println(jiegou{1,2})
}
//输出结果为{1,2}
结构体字段使用点号来访问
type Vertex struct {
x int
y int
}
func main (){
v:=Vertex{1,2}
v.x=3
fmt.Println(v.x)
}//输出:3
type Vertex struct {
x int
y int
}
func main (){
v:=Vertex{1,2}
p:=&v
p.x=3
fmt.Println(v)//结果为(3,2)
}
结构体文法通过==直接列出字段的值==来新分配一个结构体
type Vertex struct {
x int
y int
}
func main (){
v1=Vertex{1,2}
v2=Vertex{x:1}//默认y:0
v3=Vertex{}//默认x:0,y:0
p=&Vertex{1,2}//p是指向{1,2}的结构体指针
}
[n]T表示n个T类型的数组
var a[10]int
var main (){
var a[2]string
a[0]="hello"
a[1]="world"
b:=[6]int{1,2,3,4,5,6}
}
a[1:4]
func main (){
b:=[6]int {1,2,3,4,5,6}
var s[]int = b[1:4]//切片s包含b1-b3
}
func main (){
names:=[4]string {
"LiHua"
"Mike"
"Tom"
"ha"
}
a:=names[0:2]
a[0]="Jack"
fmt.Pritln(names)//names[0]就改为了jack
}
[3]bool{true,false,true}
[]bool{true,false,true}
func main (){
q:=[]int {1,2,3,4,5,5}
p:=[]bool{true,false}
}
var a[10]int
a[0:10]
a[:10]
a[0:]
a[:]是等价的
func main (){
s:=[]int {1,2,3,4,5,6}
s=s[:0]//使其长度为0
s=s[0:4]//重新切片扩展切片
s=s[2:]//舍弃前两个值
}
a:=make([]int,2,2)//切片a的长度为2,容量为2
func main (){
a:=make([]int 5)
printslice("a",a)b
b:=make([]int,0,5)
printslice("b",b)
c:=b[0:2]
printslice("c",c)
d:=c[2:5]
}
切片可以包含任何类型,包括切片
func main(){
a:=[][]string{
[]string{"_", "_", "_"},
[]string{"_", "_", "_"},
[]string{"_", "_", "_"},
}
}
使用内建函数append函数为切片追加新的元素
func main (){
var s[]int
s=append(s,0)//添加一个空切片
s=append(s,1)
s=append(s,2,3,4)//可以一次性添加多个元素
}
for循环的range形式可以遍历切片或映射
当用for循环遍历切片时,每次迭代都会返回两个值,第一个为当前元素下标,第二个为该下标所对应元素的一份副本
var pow[]{1,2,3,4,5,6}
func main (){
for i;v=range pow{
fmt.Println("%d,%d",i,v)
}
}
可以将下标或值赋予_来忽略它
for i, _ := range pow//只返回下标
for _, value := range pow//只返回值
如果只需要索引,忽略第二个变量即可
for i := range pow
type Vertex struct{
Lat,Long float64
}
var m map[string] Vertex
func main (){
m=make(map[string]Vertex)
m["Bell Labs"]=Vertex{
40.2,-32
}
fmt.Println(m["Bell Labs"])
}
var m map[string]Vertex{
"Bell Labs":Vertex{
2,3
}
"Google":Vertex{
2,4
}
}
var m = map[string]Vertex{
"Bell Labs": {40.68433, -74.39967},
"Google": {37.42202, -122.08408},
}
m[key]=elem
elem=m[key]
delete(m,key)
elem,ok=map[key]
func main (){
m:=make(map[string]int)
m["answer"]=19
m["answer"]=121
delete(m,"answer")
v,ok:=m["answer"]
}
func compute (fn func(float64,float64)float64)float64{
return (fn(3,4))
}
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有