download:GO进阶训练营请添加链接描述
Q:参加 Go 进阶训练营,需要具备什么基础?
需要掌握 Go 语言基础语法,并具备一定的 Go 语言相关项目开发经验。
Q:学完课程后能到什么水平?
Go 进阶训练营课程设计对标字节跳动 2-2 级胜任力模型,教学贴近大厂真实场景。课程中的实践驱动,不仅可以系统提升你的代码硬实力,同时也会培养你进入一线互联网大厂必备的思维能力。
我们的课程培养目标是大厂的资深 Go 工程师、高级 Go 开发工程师、Go 技术专家。按照老师系统性的规划,用心学习,可以帮你摆脱低效和痛苦的自学,事半功倍,学完后可以达到一线互联网大厂中高级 Go 开发工程师的水平。
哪些人适合报名 Go 进阶训练营?
2 年以上工作经验,在理论和技术方面有进阶学习需求的 Go 语言工程师;
其它语言转 Go(比如 Java )的工程师,用 Go 写过简单的项目,但工作中用 Go 写中大型的复杂项目比较吃力。
剖析:由於當b^2-4ac>=0時,方程有兩個實根,否則(b^2-4ac<0)有兩個共轭復根。其程序段如下:
d=bb-4a*c;
if(d>=0)
{x1=(-b+sqrt(d))/2a;
x1=(-b-sqrt(d))/2a;
printf("x1=%8.4f,x2=%8.4f\n",x1,x2);
}
else
{r=-b/(2*a);
i =sqrt(-d)/(2*a);
printf("x1=%8.4f+%8.4fi\n"r, i);
printf("x2=%8.4f-%8.4fi\n"r,i);
}
③ if...else if语句
其语句格式爲:
if(條件1) {分支1};
else if(條件2) {分支2}
else if(條件3) {分支3}
……
else if(條件n) {分支n}
else {分支n+1}
意義是,從上到下依次檢測判別條件,當某個判別條件成立時,則執行其對應的分支,然後跳到整個 if else 语句之外繼續執行其他代码。假如一切判別條件都不成立,則執行语句塊n,然後繼續執行後續代码。
也就是說,一旦遇到可以成立的判別條件,則不再執行其他的分支,所以最終只能有一個分支被執行。
嵌套分支语句雖可處理多個入口和出口的問題,但超越3重嵌套後,语句構造變得十分復雜,關於程序的阅讀和了解都極爲不便,倡議嵌套在3重以内,超越3重能夠用下面的语句。
例如,運用多個 if else 语句判別輸入的字符的類別:
#include <stdio.h>
int main(){
char c;
printf("Input a character:");
c=getchar();
if(c<32)
printf("This is a control character\n");
else if(c>='0'&&c<='9')
printf("This is a digit\n");
else if(c>='A'&&c<='Z')
printf("This is a capital letter\n");
else if(c>='a'&&c<='z')
printf("This is a small letter\n");
else
printf("This is an other character\n");
return 0;
}
運轉結果:
Input a character:e↙
This is a small letter
在運用 if 语句時還應留意以下兩點:
在 if 语句中,判別條件必需用括號括起來。
语句塊由{ }包圍,但要留意的是在}之後不需求再加分號;(當然加上也沒錯)。
④if嵌套分支语句
當if语句中的執行语句又是if语句時,則構成了if语句嵌套。
if(條件表達式)
if语句;
或者
if(條件表達式)
if语句;
else
if语句;
demo:修正下面的程序使程序:輸入a和b的值,判別最大值能否大於100,是則輸出最大值。
int main(void)
{
int a = 0;
int b = 0;
printf("請依次輸入a和b的值:");
scanf("%d%d",&a,&b);
if(a < b)
if(b > 100)
printf("max:%d\n",b);
else
if(a > 100)
printf("max:%d\n",a);
return 0;
}
留意:C言语規則,else總是與它前面最近的爲配對的if配對。
所以修正後應爲:
int main(void)
{
int a = 0;
int b = 0;
printf("請依次輸入a和b的值:");
scanf("%d%d",&a,&b);
if(a < b)
{
if(b > 100)
printf("max:%d\n",b);
}
else
{
if(a > 100)
printf("max:%d\n",a);
}
return 0;
}
demo:輸入a、b、c的值,判別並輸出最大值
int main(void)
{
int a = 0;
int b = 0;
int c = 0;
int max = 0;
printf("請依次輸入a、b、c的值:");
scanf("%d%d%d", &a, &b,&c);//
if (a > b)
{
if (a > c)
max = a;
else
max = c;
}
else//b > a
{
if (b > c)
max = b;
else
max = c;
}
printf("max:%d\n", max);
return 0;
}
2、switch開關语句
C言语固然沒有限製 if else 可以處置的分支數量,但當分支過多時,用 if else 處置會不太便當,而且容易呈現 if else 配對出錯的狀況。關於這種狀況,實践開發中普通運用 switch 语句替代。
該语句也是多分支選择语句,到底執行哪一塊,取決於開關設置,也就是表達式的值與常量表達式相匹配的那一路。
switch 是另外一種選择構造的语句,用來替代简單的、具有多個分枝的 if else 语句,根本格式如下:
switch(表達式){
case 整型數值1: 语句 1;
case 整型數值2: 语句 2;
......
case 整型數值n: 语句 n;
default: 语句 n+1;
}
它的執行過程是:
-
首先計算“表達式”的值,假定爲 m。
-
從第一個 case 開端,比擬“整型數值1”和 m,假如它們相等,就執行冒號後面的一切语句,也就是從“语句1”不斷執行到“语句n+1”,而不論後面的 case 能否匹配勝利。
-
假如“整型數值1”和 m 不相等,就跳過冒號後面的“语句1”,繼續比擬第二個 case、第三個 case……一旦發現和某個整型數值相等了,就會執行後面一切的语句。假定 m 和“整型數值5”相等,那麼就會從“语句5”不斷執行到“语句n+1”。
-
假如直到最後一個“整型數值n”