本文介绍一些Go语言的基础语法。
创新互联专注于红古企业网站建设,响应式网站开发,商城开发。红古网站建设公司,为红古等地区提供建站服务。全流程定制网站开发,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务
先来看一个简单的go语言代码:
go语言的注释方法:
代码执行结果:
下面来进一步介绍go的基础语法。
go语言中格式化输出可以使用 fmt 和 log 这两个标准库,
常用方法:
示例代码:
执行结果:
更多格式化方法可以访问中的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--
#includestdio.h
#includestring.h
#includestdlib.h
#includetime.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=0;im;i++)
for(j=0;jn;j++)
{
map[i][j]=rand()%2;
if(map[i][j])
num++;
}
if(numm*n/2)
{
for(i=0;im;i++)
for(j=0;jn;j++)
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=0;im;i++)
for(j=0;jn;j++)
{
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=0;i4;i++)
{
tx=x+d[0][i];
ty=y+d[1][i];
if(!f[tx][ty]tx=0ty=0txmtynmap[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=0;ians;i++)
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;
}
//寻路_带权重_带障碍_最短_文件地图_不闪------wlfryq------//
#include stdio.h
#include stdlib.h
#include string.h
#include windows.h
typedef struct
{
int x;
int y;
} _PT;
_PT pt;
int row=0,col=0;
//设置CMD窗口光标位置
void setxy(int x, int y)
{
COORD coord = {x, y};
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
}
//获取当前CMD当前光标所在位置
void getxy()
{
HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
COORD coordScreen = {0, 0}; //光标位置
CONSOLE_SCREEN_BUFFER_INFO csbi;
if (GetConsoleScreenBufferInfo(hConsole, csbi))
{
pt.x=csbi.dwCursorPosition.X;
pt.y=csbi.dwCursorPosition.Y;
}
}
typedef struct
{
int x;
int y;
int type;
int v;
}PT;
PT **s=NULL,stack[50],start,end,c;
int pos=0;
void prt()
{
int i,j;
system("cls");
for(i=0;irow;i++)
{
for(j=0;jcol;j++)
{
if(s[i][j].type==1)
{
printf("■");
}
else if(i==end.x j==end.y)
{
printf("★");
}
else if(i==c.x j==c.y)
{
printf("◎");
}
else
{
printf(" ");
}
}
printf("\n");
}
Sleep(500);
}
void stack_in(PT a)
{
stack[pos++]=a;
}
PT stack_out()
{
int i;
PT t;
t=stack[0];
for(i=0;ipos-1;i++)
{
stack[i]=stack[i+1];
}
pos--;
return t;
}
void fun()
{
PT a;
int x,y,v;
while(1)
{
if(pos==0)
{
break;
}
a=stack_out();
x=a.x;
y=a.y;
if(x==start.x y==start.y)
{
break;
}
v=s[x][y].v;
if(x-1=0 s[x-1][y].type==0 (s[x-1][y].v==-1 || s[x-1][y].vv+1))
{
s[x-1][y].v=v+1;
stack_in(s[x-1][y]);
}
if(x+1=row-1 s[x+1][y].type==0 (s[x+1][y].v==-1 || s[x-1][y].vv+1))
{
s[x+1][y].v=v+1;
stack_in(s[x+1][y]);
}
if(y-1=0 s[x][y-1].type==0 (s[x][y-1].v==-1 || s[x-1][y].vv+1))
{
s[x][y-1].v=v+1;
stack_in(s[x][y-1]);
}
if(y+1=col-1 s[x][y+1].type==0 (s[x][y+1].v==-1 || s[x-1][y].vv+1))
{
s[x][y+1].v=v+1;
stack_in(s[x][y+1]);
}
}
}
void go(int x, int y)
{
printf("\n按任意键开始\n");
getchar();
int v;
while(1)
{
if(x==end.x y==end.y)
{
setxy(0,y+2);
printf("end....");
return;
}
v=s[x][y].v;
if(v==0)
{
return;
}
if(x-1=0 s[x-1][y].v==v-1)
{
c=s[x-1][y];
setxy(y*2,x);
x=x-1;
printf(" ");
setxy(y*2,x);
printf("◎");
Sleep(500);
continue;
}
else if(x+1=row-1 s[x+1][y].v==v-1)
{
c=s[x+1][y];
setxy(y*2,x);
x++;
printf(" ");
setxy(y*2,x);
printf("◎");
Sleep(500);
continue;
}
else if(y-1=0 s[x][y-1].v==v-1)
{
c=s[x][y-1];
setxy(y*2,x);
y--;
printf(" ");
setxy(y*2,x);
printf("◎");
Sleep(500);
continue;
}
else if(y+1=col-1 s[x][y+1].v==v-1)
{
c=s[x][y+1];
setxy(y*2,x);
y++;
printf(" ");
setxy(y*2,x);
printf("◎");
Sleep(500);
continue;
}
}
printf("\nreturn go\n");
system("pause");
}
void GetMapFromFile()
{
int i,j,x,y,len;
char ch[50]={'\0'};
FILE* fp=fopen("e:\\map1.txt","r");
if(fp==NULL)
{
printf("open file failed.\n");
return;
}
x=0;
while(!feof(fp))
{
fgets(ch,50,fp);
row++;
}
col=strlen(ch);
fseek(fp,0L,SEEK_SET);
while(!feof(fp))
{
fgets(ch,50,fp);
if(s==NULL)
{
len=strlen(ch);
for(i=len-1;i0;i--)
{
if(ch[i]!='0' ch[i]!='1')
{
ch[i]='\0';
}
else
{
break;
}
}
len=strlen(ch);
s=(PT**)malloc(sizeof(PT*)*row);
for(j=0;jlen;j++)
{
*(s+j)=(PT*)malloc(sizeof(PT)*len);
}
}
y=0;
for(i=0;ilen;i++)
{
s[x][y].type=ch[i]-48;
s[x][y].x=x;
s[x][y].y=y;
s[x][y].v=-1;
y++;
}
x++;
}
start=s[row-2][1];
end=s[row-2][len-2];
fclose(fp);
}
int main()
{
GetMapFromFile();
int i,j;
int x,y;
x=end.x;
y=end.y;
s[x][y].v=0;
stack_in(end);
fun();
c=start;
prt();
go(start.x,start.y);
return 0;
}