本文介绍一些Go语言的基础语法。
先来看一个简单的go语言代码:
go语言的注释方法:
代码执行结果:
下面来进一步介绍go的基础语法。
go语言中格式化输出可以使用 fmt 和 log 这两个标准库,
常用方法:
示例代码:
执行结果:
更多格式化方法可以访问https://studygolang.com/pkgdoc中的fmt包。
log包实现了简单的日志服务,也提供了一些格式化输出的方法。
执行结果:
下面来介绍一下go的数据类型
下表列出了go语言的数据类型:
int、float、bool、string、数组和struct属于值类型,这些类型的变量直接指向存在内存中的值;slice、map、chan、pointer等是引用类型,存储的是一个地址,这个地址存储最终的值。
常量是在程序编译时就确定下来的值,程序运行时无法改变。
执行结果:
执行结果:
Go 语言的运算符主要包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符以及指针相关运算符。
算术运算符:
关系运算符:
逻辑运算符:
位运算符:
赋值运算符:
指针相关运算符:
下面介绍一下go语言中的if语句和switch语句。另外还有一种控制语句叫select语句,通常与通道联用,这里不做介绍。
if语法格式如下:
if ... else :
else if:
示例代码:
语法格式:
另外,添加 fallthrough 会强制执行后面的 case 语句,不管下一条case语句是否为true。
示例代码:
执行结果:
下面介绍几种循环语句:
执行结果:
执行结果:
也可以通过标记退出循环:
--THE END--
#include<stdio.h>#include<string.h>
#include<stdlib.h>
#include<time.h>
int m,n,num,map[101][101],f[101][101],a[101],b[101],d[2][4]={0,-1,0,1,-1,0,1,0},ans,flag
void maze()
{
int i,j
time_t t
srand(time(&t))
for(i=0i<mi++)
for(j=0j<nj++)
{
map[i][j]=rand()%2
if(map[i][j])
num++
}
if(num<m*n/2)
{
for(i=0i<mi++)
for(j=0j<nj++)
if(!map[i][j])
map[i][j]+=rand()%2
}
map[0][0]=1
map[m-1][n-1]=1
}
void print()
{
int i,j
for(i=0i<mi++)
for(j=0j<nj++)
{
printf("%d ",map[i][j])
if(j==n-1)puts("")
}
}
void dfs(int x,int y)
{
int i,tx,ty
if(!flag)
return
for(i=0i<4i++)
{
tx=x+d[0][i]
ty=y+d[1][i]
if(!f[tx][ty]&&tx>=0&&ty>=0&&tx<m&&ty<n&&map[tx][ty])
{
f[tx][ty]=1
a[ans]=tx
b[ans++]=ty
if(tx+ty==0)
{
printf("(%d,%d)\n",m,n)
for(flag=i=0i<ansi++)
printf("(%d,%d)\n",a[i]+1,b[i]+1)
return
}
dfs(tx,ty)
f[tx][ty]=0
ans--
}
}
}
int main()
{
while(scanf("%d%d",&m,&n),m+n)
{
memset(f,0,sizeof(f))
num=ans=0
flag=1
maze()
print()
dfs(m-1,n-1)
if(flag)
puts("There is no path")
}
return 0
}