新聞中心
Go語言基礎語法(一)
本文介紹一些Go語言的基礎語法。
創(chuàng)新互聯(lián)公司服務項目包括恩陽網(wǎng)站建設、恩陽網(wǎng)站制作、恩陽網(wǎng)頁制作以及恩陽網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯(lián)網(wǎng)行業(yè)的解決方案,恩陽網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到恩陽省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
先來看一個簡單的go語言代碼:
go語言的注釋方法:
代碼執(zhí)行結果:
下面來進一步介紹go的基礎語法。
go語言中格式化輸出可以使用 fmt 和 log 這兩個標準庫,
常用方法:
示例代碼:
執(zhí)行結果:
更多格式化方法可以訪問中的fmt包。
log包實現(xiàn)了簡單的日志服務,也提供了一些格式化輸出的方法。
執(zhí)行結果:
下面來介紹一下go的數(shù)據(jù)類型
下表列出了go語言的數(shù)據(jù)類型:
int、float、bool、string、數(shù)組和struct屬于值類型,這些類型的變量直接指向存在內存中的值;slice、map、chan、pointer等是引用類型,存儲的是一個地址,這個地址存儲最終的值。
常量是在程序編譯時就確定下來的值,程序運行時無法改變。
執(zhí)行結果:
執(zhí)行結果:
Go 語言的運算符主要包括算術運算符、關系運算符、邏輯運算符、位運算符、賦值運算符以及指針相關運算符。
算術運算符:
關系運算符:
邏輯運算符:
位運算符:
賦值運算符:
指針相關運算符:
下面介紹一下go語言中的if語句和switch語句。另外還有一種控制語句叫select語句,通常與通道聯(lián)用,這里不做介紹。
if語法格式如下:
if ... else :
else if:
示例代碼:
語法格式:
另外,添加 fallthrough 會強制執(zhí)行后面的 case 語句,不管下一條case語句是否為true。
示例代碼:
執(zhí)行結果:
下面介紹幾種循環(huán)語句:
執(zhí)行結果:
執(zhí)行結果:
也可以通過標記退出循環(huán):
--THE END--
【10】Go語言運算符及運算符的優(yōu)先級
運算符用于在程序運行時執(zhí)行數(shù)學或邏輯運算。
1.算術運算符
Go 語言的算術運算符如圖,假設A值為10,B值為20。
2.關系運算符
Go 語言的關系運算符如圖,假設A值為10,B值為20。
3.邏輯運算符
Go 語言的邏輯運算符如圖。假定A值為True,B值為False。
4.位運算符
位運算符對整數(shù)在內存中的二進制位進行操作。
位運算符比一般的算術運算符速度要快,而且可以實現(xiàn)一些算術運算符不能實現(xiàn)的功能。如果要開發(fā)高效率程序,位運算符是必不可少的。
Go 語言的位運算符如圖。假定 A = 60,B = 13,其二進制數(shù)轉換如下。
A = 0011 1100
B = 0000 1101
5.賦值運算符
Go 語言的賦值運算符如圖。
6.其他運算符
Go 語言的其他運算符如圖。
運算符的優(yōu)先級
所謂優(yōu)先級,就是當多個運算符出現(xiàn)在同一個表達式中時,先執(zhí)行哪個運算符。
每天一個知識點:Go?語言當中?Channel(通道)有什么特點,需要注意什么?
使用簡單的 make 調用創(chuàng)建的通道叫做無緩沖通道,但 make 還可以接受第二個可選參數(shù),一個表示通道容量的整數(shù)。如果容量是 0,make 創(chuàng)建一個無緩沖通道。
無緩沖通道上的發(fā)送操作將被阻塞,直到另一個 goroutine 在對應的通道上執(zhí)行接受操作,這時值傳送完成,兩個 goroutine 都可以繼續(xù)執(zhí)行。相反,如果接受操作先執(zhí)行,接收方 goroutine 將阻塞,直到另一個 goroutine 在同一個通道上發(fā)送一個值。使用無緩沖通道進行的通信導致發(fā)送和接受操作 goroutine 同步化。因此,無緩沖通道也稱為同步通道。當一個值在無緩沖通道上傳遞時,接受值后發(fā)送方 goroutine 才能被喚醒。
緩沖通道上的發(fā)送操作在隊列的尾部插入一個元素,接收操作從隊列的頭部移除一個元素。如果通道滿了,發(fā)送操作會阻塞所在的 goroutine 直到另一個 goroutine 對它進行接收操作來留出可用的空間。反過來,如果通道是空的,執(zhí)行接收操作的 goroutine 阻塞,直到另一個 goroutine 在通道上發(fā)送數(shù)據(jù)。
如果給一個 nil 的 channel 發(fā)送數(shù)據(jù),會造成永遠阻塞。
如果從一個 nil 的 channel 中接收數(shù)據(jù),也會造成永久阻塞。 給一個已經(jīng)關閉的 channel 發(fā)送數(shù)據(jù), 會引起 panic。
從一個已經(jīng)關閉的 channel 接收數(shù)據(jù), 如果緩沖區(qū)中為空,則返回一個 零 值。
golang位移運算
之前是寫java的,沒有無符號有符號之分,最近刷題碰到了位運算的題,就想把這個搞清楚一點。
另外常用的int類型是有符號數(shù),位長取決于你的電腦的位長,電腦是64位的int就是64位的。
左移
右移
首先無符號數(shù)沒啥好說的,不管左移還是右移都是補0
有符號數(shù),以int為例(64位)
老樣子,機器內存的是補碼
以7fffffffffffffffff為例
從前三個輸出看,沒有辦法直接給int賦最大值(16進制),全f的話會報錯,也就是不能直接賦值符號位,
但是第四個輸出來看,這里的運算是邏輯位移,輸出-2(ffffffffffffffe,找了半天也沒找到怎樣輸出正兒八經(jīng)的16進制數(shù)),也就是位移包括符號位.
之后再右移多少位都是-1(ffffff...f),就是補碼位移規(guī)則
綜上:
。。。。好亂
標題名稱:go語言位左移 go 左移右移
網(wǎng)站網(wǎng)址:http://fisionsoft.com.cn/article/hhdcpj.html