新聞中心
Go語言基礎(chǔ)語法(一)
本文介紹一些Go語言的基礎(chǔ)語法。
成都創(chuàng)新互聯(lián)公司是專業(yè)的廬山網(wǎng)站建設(shè)公司,廬山接單;提供成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行廬山網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
先來看一個(gè)簡單的go語言代碼:
go語言的注釋方法:
代碼執(zhí)行結(jié)果:
下面來進(jìn)一步介紹go的基礎(chǔ)語法。
go語言中格式化輸出可以使用 fmt 和 log 這兩個(gè)標(biāo)準(zhǔn)庫,
常用方法:
示例代碼:
執(zhí)行結(jié)果:
更多格式化方法可以訪問中的fmt包。
log包實(shí)現(xiàn)了簡單的日志服務(wù),也提供了一些格式化輸出的方法。
執(zhí)行結(jié)果:
下面來介紹一下go的數(shù)據(jù)類型
下表列出了go語言的數(shù)據(jù)類型:
int、float、bool、string、數(shù)組和struct屬于值類型,這些類型的變量直接指向存在內(nèi)存中的值;slice、map、chan、pointer等是引用類型,存儲的是一個(gè)地址,這個(gè)地址存儲最終的值。
常量是在程序編譯時(shí)就確定下來的值,程序運(yùn)行時(shí)無法改變。
執(zhí)行結(jié)果:
執(zhí)行結(jié)果:
Go 語言的運(yùn)算符主要包括算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符、賦值運(yùn)算符以及指針相關(guān)運(yùn)算符。
算術(shù)運(yùn)算符:
關(guān)系運(yùn)算符:
邏輯運(yùn)算符:
位運(yùn)算符:
賦值運(yùn)算符:
指針相關(guān)運(yùn)算符:
下面介紹一下go語言中的if語句和switch語句。另外還有一種控制語句叫select語句,通常與通道聯(lián)用,這里不做介紹。
if語法格式如下:
if ... else :
else if:
示例代碼:
語法格式:
另外,添加 fallthrough 會強(qiáng)制執(zhí)行后面的 case 語句,不管下一條case語句是否為true。
示例代碼:
執(zhí)行結(jié)果:
下面介紹幾種循環(huán)語句:
執(zhí)行結(jié)果:
執(zhí)行結(jié)果:
也可以通過標(biāo)記退出循環(huán):
--THE END--
PHP 和 GO語言在處理數(shù)據(jù)計(jì)算時(shí),哪個(gè)性能更
單純數(shù)據(jù)運(yùn)算的話,Go語言執(zhí)行效率要跟高于PHP. Go語言更偏向于工程學(xué),體積大, 邏輯簡單, 有一定運(yùn)算量, 不適合處理業(yè)務(wù). php適合做邏輯.
go語言操作符 ^ 和 &^
很多語言都是采用 ~ 作為按位取反運(yùn)算符,Go 里面采用的是 ^ 。
如果作為二元運(yùn)算符,^ 表示按位異或,即:對應(yīng)位相同為 0,相異為 1。
操作符 ^,按位置零,例如:z = x ^ y,表示如果 y 中的 bit 位為 1,則 z 對應(yīng) bit 位為 0,否則 z 對應(yīng) bit 位等于 x 中相應(yīng)的 bit 位的值。
對于有符號的整數(shù)來說,是按照補(bǔ)碼進(jìn)行取反操作的(快速計(jì)算方法:對數(shù) a 取反,結(jié)果為 -(a+1) ),對于無符號整數(shù)來說就是按位取反
計(jì)算過程
以3為例? 3在內(nèi)存中補(bǔ)碼為 0*** 0011
取反? ? ? ? ? ? 1*** 1100
-1操作? ? ? ? ? 1*** 1011
除符號位取反? ? 1*** 0100 結(jié)果為-4
-------------------------------------------
以9為例 9在內(nèi)存中補(bǔ)碼為 0*** 1001
取反? ? ? ? ? ? 1*** 0110
-1操作? ? ? ? ? 1*** 0101
除符號位取反? ? 1*** 1010 結(jié)果為-10
-------------------------------------------
以-5為例 -5在內(nèi)存中為的補(bǔ)碼為 1*** 1011
為什么呢
-5源碼? ? ? ? ? 1*** 0101
除符號取反? ? ? 1*** 1010
+1操作? ? ? ? ? 1*** 1011
-------------------------------------------
那么-5取反怎么算
補(bǔ)碼 1***1011取反為 0***0100
因?yàn)榉栁粸?,所以是正數(shù)了,正數(shù)的補(bǔ)碼反碼源碼都是一個(gè),所以是4
===================================
再看-1
-1源碼? ? ? ? ? 1*** 0001
除符號取反? ? ? 1*** 1110
+1操作? ? ? ? ? 1*** 1111
補(bǔ)碼 1*** 1111 取反為 0*** 0000
因?yàn)榉栁粸?,所以是正數(shù)了,正數(shù)的補(bǔ)碼反碼源碼都是一個(gè),所以是0
go語言取反輸出的例子看這里
【10】Go語言運(yùn)算符及運(yùn)算符的優(yōu)先級
運(yùn)算符用于在程序運(yùn)行時(shí)執(zhí)行數(shù)學(xué)或邏輯運(yùn)算。
1.算術(shù)運(yùn)算符
Go 語言的算術(shù)運(yùn)算符如圖,假設(shè)A值為10,B值為20。
2.關(guān)系運(yùn)算符
Go 語言的關(guān)系運(yùn)算符如圖,假設(shè)A值為10,B值為20。
3.邏輯運(yùn)算符
Go 語言的邏輯運(yùn)算符如圖。假定A值為True,B值為False。
4.位運(yùn)算符
位運(yùn)算符對整數(shù)在內(nèi)存中的二進(jìn)制位進(jìn)行操作。
位運(yùn)算符比一般的算術(shù)運(yùn)算符速度要快,而且可以實(shí)現(xiàn)一些算術(shù)運(yùn)算符不能實(shí)現(xiàn)的功能。如果要開發(fā)高效率程序,位運(yùn)算符是必不可少的。
Go 語言的位運(yùn)算符如圖。假定 A = 60,B = 13,其二進(jìn)制數(shù)轉(zhuǎn)換如下。
A = 0011 1100
B = 0000 1101
5.賦值運(yùn)算符
Go 語言的賦值運(yùn)算符如圖。
6.其他運(yùn)算符
Go 語言的其他運(yùn)算符如圖。
運(yùn)算符的優(yōu)先級
所謂優(yōu)先級,就是當(dāng)多個(gè)運(yùn)算符出現(xiàn)在同一個(gè)表達(dá)式中時(shí),先執(zhí)行哪個(gè)運(yùn)算符。
go語言中math.Exp2(10)什么意思?也就是說,Exp2(10)對10進(jìn)行了什么運(yùn)算?
math.Exp2(10)就是計(jì)算2的10次方。
下面是一個(gè)例子
package main
import "fmt"
import "math"
func main() {
fmt.Printf("%f\n",
math.Exp2(10))
fmt.Printf("%f\n",
math.Exp2(4))
}
go語言中數(shù)組使用的注意事項(xiàng)和細(xì)節(jié)
1、數(shù)組是多個(gè) 相同類型 的數(shù)據(jù)的組合,一個(gè)數(shù)組一旦聲明/定義了,其 長度是固定的,不能動(dòng)態(tài)變化 。
2、var arr []int? ? 這時(shí)arr就是一個(gè)slice 切片 。
3、數(shù)組中的元素可以是任何數(shù)據(jù)類型,包括值類型和引用類型,但是 不能混用 。
4、數(shù)組創(chuàng)建后,如果沒有賦值,有默認(rèn)值如下:
? ? 數(shù)值類型數(shù)組:????默認(rèn)值為 0
? ? 字符串?dāng)?shù)組:? ? ? ?默認(rèn)值為 ""
? ? bool數(shù)組:? ? ? ? ? ?默認(rèn)值為 false
5、使用數(shù)組的步驟:
? ? (1)聲明數(shù)組并開辟空間
? ? (3)給數(shù)組各個(gè)元素賦值
? ? (3)使用數(shù)組
6、數(shù)組的下標(biāo)是從0開始的。
7、數(shù)組下標(biāo)必須在指定范圍內(nèi)使用,否則報(bào)panic:數(shù)組越界,比如var arr [5]int的有效下標(biāo)為0~4.
8、Go的數(shù)組屬于 值類型 ,在默認(rèn)情況下是 值傳遞 ,因此會進(jìn)行值拷貝。 數(shù)組間不會相互影響。
9、如想在其他函數(shù)中去修改原來的數(shù)組,可以使用 引用傳遞 (指針方式)。
10、長度是數(shù)組類型的一部分,在傳遞函數(shù)參數(shù)時(shí),需要考慮數(shù)組的長度,看以下案例:
題1:編譯錯(cuò)誤,因?yàn)椴荒馨裑3]int類型傳遞給[]int類型,前者是數(shù)組,后者是切片;
題2:編譯錯(cuò)誤,因?yàn)椴荒馨裑3]int類型傳遞給[4]int類型;
題3:編譯正確,因?yàn)閇3]int類型傳給[3]int類型合法。
網(wǎng)站欄目:go語言對數(shù)據(jù)進(jìn)行運(yùn)算,go語言 科學(xué)計(jì)算
標(biāo)題URL:http://ef60e0e.cn/article/hcoisp.html