本文介紹一些Go語言的基礎(chǔ)語法。

成都創(chuàng)新互聯(lián)公司專注于企業(yè)營銷型網(wǎng)站、網(wǎng)站重做改版、臥龍網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、成都做商城網(wǎng)站、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為臥龍等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
先來看一個(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等是引用類型,存儲(chǔ)的是一個(gè)地址,這個(gè)地址存儲(chǔ)最終的值。
常量是在程序編譯時(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 會(huì)強(qiáng)制執(zhí)行后面的 case 語句,不管下一條case語句是否為true。
示例代碼:
執(zhí)行結(jié)果:
下面介紹幾種循環(huán)語句:
執(zhí)行結(jié)果:
執(zhí)行結(jié)果:
也可以通過標(biāo)記退出循環(huán):
--THE END--
golang方法(method)返回值提取結(jié)構(gòu)體(struct)取不到地址的原因是,①返回值并沒有保存到變量中,返回值本身只是臨時(shí)保存在程序運(yùn)行的堆棧的某個(gè)不確定位置,不能取地址;②實(shí)參取地址用的操作符是是,而形參聲明變量類型為指針,需要地址值用的才是*;③聲明形參為指針的參數(shù)的實(shí)參只能為地址值。
故先把修改后的代碼列出,修改要點(diǎn)是把“*NewPerson1().Speak()”改為“var b=NewPerson1();(b).Speak()”,同時(shí)把“NewPerson2().Speak()”改成“var a=NewPerson2();(a).Speak()”,代碼列出如下:
package main;
import "fmt";
type PersonA struct{
name string
}
func (p *PersonA) Speak () {
fmt.Println ( "person speak" ,p.name)
}
func (p PersonA) Walk ( ){
fmt . Println ( "person walk",p.name)}
func NewPerson1()(p PersonA){
return PersonA{"new Person1"}}
func NewPerson2()(p PersonA){
return PersonA{"new Person2"}}
func main () {
var a=NewPerson2 (); (a).Speak ();?
a .Walk ();
fmt. Println ("--------------------")?;
var b=NewPerson1 ();(b).Speak ();
b.Walk ()}
go代碼調(diào)試效果
關(guān)于指針變量的使用這一點(diǎn)go語言和其他有指針的程序語言如c語言是一樣的,從來只有返回值為地址/指針,而從沒有在賦值前給返回值取地址這種運(yùn)算,類似的錯(cuò)誤晚點(diǎn)再整理。
不一樣的是,go語言更簡單go語言函數(shù)可以使用結(jié)構(gòu)體或者結(jié)構(gòu)體的指針(pointer)以傳遞結(jié)構(gòu)體參數(shù),而且和c語言不一樣的是,go語言沒有區(qū)分結(jié)構(gòu)體指針和結(jié)構(gòu)體訪問成員的運(yùn)算符,go語言只有“.”適用于兩種情況,而沒有c語言為結(jié)構(gòu)體指針專門準(zhǔn)備的“-”運(yùn)算符。
可以使用結(jié)構(gòu)體指針,作為結(jié)構(gòu)體的方法的參數(shù)以指代自身嗎,
1、new 的主要特性
首先 new 是內(nèi)建函數(shù),定義也很簡單:
func new(Type) *Type
內(nèi)建函數(shù) new 用來分配內(nèi)存,第一個(gè)參數(shù)是一個(gè)類型,不是一個(gè)值,返回值是一個(gè)指向新分配類型零值的指針
實(shí)現(xiàn)一個(gè)類似 new 的功能:
func newInt() *int {
var i int
return i
}
someInt := newInt()
函數(shù)的功能跟 someInt := new(int) 一模一樣。定義 new 開頭的函數(shù)時(shí),出于約定也應(yīng)該返回類型的指針。
2、make 的主要特性
make 也是內(nèi)建函數(shù),定義比 new 多了一個(gè)參數(shù),返回值也不同:
func make(Type, size IntegerType) Type
內(nèi)建函數(shù) make 用來為 slice,map 或 chan 類型分配內(nèi)存和初始化一個(gè)對(duì)象(注意:只能用在這三種類型上),跟 new 類似,第一個(gè)參數(shù)也是一個(gè)類型而不是一個(gè)值,跟 new 不同的是,make 返回類型的引用而不是指針,而返回值也依賴于具體傳入的類型,具體說明如下:
Slice: 第二個(gè)參數(shù) size 指定了長度,容量和長度相同。
可以傳入第三個(gè)參數(shù)來指定不同的容量值,但必須不能比長度值小。
比如 make([]int, 0, 10)
Map: 根據(jù) size 大小來初始化分配內(nèi)存,不過分配后的 map 長度為 0,如果 size 被忽略了,那么會(huì)在初始化分配內(nèi)存時(shí)分配一個(gè)小尺寸的內(nèi)存
Channel: 管道緩沖區(qū)依據(jù)緩沖區(qū)容量被初始化。如果容量為 0 或者忽略容量,管道沒有緩沖區(qū)。
3、總結(jié)
new 的作用是初始化一個(gè)指向類型的指針(*T),make 的作用是為 slice,map 或 chan 初始化并返回引用(T)。
沒有的,go中只能這樣
var a int
if x 0 {
a = 1
} else {
a = 2
}
左移運(yùn)算符()
將一個(gè)運(yùn)算對(duì)象的各二進(jìn)制位全部左移若干位(左邊的二進(jìn)制位丟棄,右邊補(bǔ)0)。
例:a = a 2 將a的二進(jìn)制位左移2位,右補(bǔ)0,
左移1位后a = a * 2;
若左移時(shí)舍棄的高位不包含1,則每左移一位,相當(dāng)于該數(shù)乘以2。
右移運(yùn)算符()
將一個(gè)數(shù)的各二進(jìn)制位全部右移若干位,正數(shù)左補(bǔ)0,負(fù)數(shù)左補(bǔ)1,右邊丟棄。
操作數(shù)每右移一位,相當(dāng)于該數(shù)除以2。
例如:a = a 2 將a的二進(jìn)制位右移2位,
左補(bǔ)0 or 補(bǔ)1 得看被移數(shù)是正還是負(fù)。
運(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)算符對(duì)整數(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)先級(jí)
所謂優(yōu)先級(jí),就是當(dāng)多個(gè)運(yùn)算符出現(xiàn)在同一個(gè)表達(dá)式中時(shí),先執(zhí)行哪個(gè)運(yùn)算符。
新聞標(biāo)題:go語言三元運(yùn)算符 go 運(yùn)算符
當(dāng)前網(wǎng)址:http://chinadenli.net/article46/higheg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、網(wǎng)站收錄、定制開發(fā)、云服務(wù)器、網(wǎng)站改版、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)