GO进阶训练营请添加链接描述

140 阅读5分钟

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;

}

它的執行過程是:

  1. 首先計算“表達式”的值,假定爲 m。

  2. 從第一個 case 開端,比擬“整型數值1”和 m,假如它們相等,就執行冒號後面的一切语句,也就是從“语句1”不斷執行到“语句n+1”,而不論後面的 case 能否匹配勝利。

  3. 假如“整型數值1”和 m 不相等,就跳過冒號後面的“语句1”,繼續比擬第二個 case、第三個 case……一旦發現和某個整型數值相等了,就會執行後面一切的语句。假定 m 和“整型數值5”相等,那麼就會從“语句5”不斷執行到“语句n+1”。

  4. 假如直到最後一個“整型數值n”